はじめに
こんにちは、@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);
このほかにもたくさんのアクションが用意されていますので、ぜひ一度確認してみてください。
次回は連続したアクションの作成方法についてご説明します。
今回はここまでです。