読者です 読者をやめる 読者になる 読者になる

個人的なメモ 〜Cocos Sharp 情報を中心に‥

Tomohiro Suzuki @hiro128_777 のブログです。Cocos Sharp の事を中心に書いています。 Microsoft MVP for Visual Studio and Development Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Cocos Sharp での基本的なゲームの制御の方法(1) スケジューラ

これまで、とりあえずサンプルコードを見ていただいたほうがわかりやすいと思ったので、あまり説明をせず、サンプルコードをご紹介しましたが、ここで、一度基本的なゲームの作り方を整理したいと思います。

大雑把に言ってしまえば、Cocos Sharp での基本的なゲームの制御の方法をマスターするには以下の2つの概念を理解すれば十分です。

① スケジューラ 一定間隔で繰り返し何らかの処理を行なう。
② アクション  画面上のオブジェクトに対して何らかの動きを指示する。また、オブジェクトにひも付けて何らかの処理を行なう。

基本的にこれだけです。

ですが、この2つは処理の方向性がまったく違うのでそれぞれの特性をよく理解し使用しましょう。

今回は、①のスケジューラについてご説明します。

スケジューラとは一定間隔で繰り返し何らかの処理を行なう機能です。
ゲームの中ではゲームを進行する上で必要な様々な処理に使用します。
例えば、自機の移動、当たり判定、スコアなどの各種表示項目の制御などです。

Cocos Sharp のスケジューラは具体的には、CCNode クラスの Schedule メソッドです。
いくつかオーバーロードがありますが、次の2つだけ覚えれば十分です。

public void Schedule(Action<float> selector, float interval);
public void ScheduleOnce(Action<float> selector, float delay);

それぞれの使用方法ですが、

public void Schedule(Action<float> selector, float interval);

interval で指定された間隔ごとに selector で指定されたデリゲートを実行します。
※デリゲートはラムダ式で書くので、要はラムダ式内で指定したメソッドを実行するということになります。

例えば、以下のような場合、0.1秒ごとに、DetectCollisions() メソッドを実行します。

this.Schedule(t => this.DetectCollisions(), 0.1f);

private void DetectCollisions()
{
	// 当たり判定の処理
}

この場合、0.1秒ごとに当たり判定が実行されます。

public void ScheduleOnce(Action<float> selector, float delay);

selector で指定されたデリゲートを delay で指定された時間遅延させて実行します。

例えば、以下のような場合、1秒後に、PerformGameOver() メソッドを実行します。

this.ScheduleOnce(t => this.PerformGameOver(), 1f);

private void PerformGameOver()
{
	// ゲームオーバーの処理
}

この場合、1秒後にゲームオーバーの処理が実行されます。

スケジューラは、Cocos Sharp でゲームを作成する場合最も重要な機能です。
Cocos Sharp ではスケジューラが回ることでゲームが構成されます。

今回はここまでです。