個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Microsoft MVP for Developer Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Cocos Sharp での基本的なゲームの制御の方法(2) 代表的なアクションの種類

はじめに

こんにちは、@hiro128_777です。

今回も、Cocos Sharp での基本的なゲームの制御の方法をご説明します。

前回の繰り返しになりますが、Cocos Sharp での基本的なゲームの制御の方法を理解するには以下の2つの概念を理解すれば大丈夫です。

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

今回は、②のアクションについてご説明します。

アクション

アクションとは、画面上のオブジェクトに対して何らかの動きを指示したり、オブジェクトにひも付けて何らかの処理を行なうものです。
例えば、画面上のキャラクターの移動、回転、拡大縮小、色の変更などが該当します。

Cocos Sharp のアクションの基本クラスは、CCActionであり、
すべてのアクションは CCAction の派生クラスになります。

以下に、代表的なアクションをご紹介します。

public CCMoveTo(float duration, CCPoint position);
public CCMoveBy(float duration, CCPoint position);
public CCScaleTo(float duration, float scale);
public CCScaleBy(float duration, float scale);
public CCRotateTo(float duration, float deltaAngle);
public CCRotateBy(float duration, float deltaAngle);

To と By の違いですが、
To はアクション完了時の絶対値、By は現在からの相対値になります。

それではそれぞれの使用方法を見ていきましょう。

CCMoveTo : 絶対位置指定の移動

public CCMoveTo(float duration, CCPoint position);

position で指定された画面上の座標に duration の所要時間で移動します。

(例)画面上の 50, 100 の座標に3秒の所要時間で移動します。

var moveToAction = new CCMoveTo(3f, new CCPoint(50f, 100f));
node.RunAction(moveToAction);

CCMoveBy : 相対位置指定の移動

public CCMoveBy(float duration, CCPoint position);

現在の座標から position で指定された座標分だけ duration の所要時間で移動します。

(例)現在位置より画面上の座標で、 X軸方向に 50、 Y軸方向に100の座標に3秒の所要時間で移動します。

var moveByAction = new CCMoveBy(3f, new CCPoint(50f, 100f));
node.RunAction(moveByAction);

CCScaleTo : 絶対倍率指定の拡大縮小

public CCScaleTo(float duration, float scale);

オブジェクトの当初のサイズを基準として scale で指定された倍率に duration の所要時間で拡大縮小します。

(例)オブジェクトを3秒の所要時間で当初のサイズより2倍に拡大(場合によっては縮小)します。

var scaleToAction = new CCScaleTo(3f, 2f);
node.RunAction(scaleToAction);

CCScaleBy : 相対倍率指定の拡大縮小

public CCScaleBy(float duration, float scale);

現在のサイズから scale で指定された倍率に duration の所要時間で拡大縮小します。

(例)オブジェクトを3秒の所要時間で現在のサイズより2倍に拡大します。

var scaleByAction = new CCScaleBy(3f, 2f);
node.RunAction(scaleByAction);

CCRotateTo : 絶対角度指定の回転

public CCRotateTo(float duration, float deltaAngle);

オブジェクトの0度を基準として deltaAngle で指定された角度に duration の所要時間で回転します。

(例)オブジェクトを3秒の所要時間で45度の角度に回転させます。

var rotateToAction = new CCRotateTo(3f, 45f);
node.RunAction(rotateToAction);

CCRotateBy : 相対角度指定の回転

public CCRotateBy(float duration, float deltaAngle);

オブジェクトの現在の角度を基準として deltaAngle で指定された角度分だけ duration の所要時間で回転します。

(例)オブジェクトを3秒の所要時間で当初の角度を基準として45度回転させます。
※現在の角度が45度なら当初の角度から90度の回転となります。

var rotateByAction = new CCRotateBy(3f, 45f);
node.RunAction(rotateByAction);

このほかにもたくさんのアクションが用意されていますので、ぜひ一度確認してみてください。

次回は連続したアクションの作成方法についてご説明します。

今回はここまでです。