ACTION GAME MAKER では、各ステートに DisplayDirection と呼ばれるシステムが含まれており、オブジェクトの向きに応じてアニメーションを再生します。
本マニュアルでは、DisplayDirection の制御方法について説明します。
DisplayDirection をサポートするアニメーションセットの詳細については、以下をご覧ください:
DisplayDirection システムの概要
DisplayDirection は 8方向 で設定可能です。
DisplayDirection の設定
DisplayDirection は、各ステートの 「DisplayDirection」 設定で変更できます。
さらに、FaceDirectionSettings ノード で設定した FaceDirection を使用することで、より詳細な制御が可能です。
各ステートの「DisplayDirection」設定
DisplayDirection は以下のいずれかに設定できます:
- 移動方向:常に現在の移動方向と同期します。
- 移動キー方向:常にオブジェクトに割り当てられた移動キー入力の方向と同期します。
- 右/左:常に右または左を向きます。
- FaceDirectionSettings を使用:FaceDirectionSettings ノードで設定された FaceDirection に従って向きます(以下で説明)。
設定された DisplayDirection は、オブジェクトが同じステートにいる間維持されます。
FaceDirectionSettings ノード(FaceDirection 設定)
このノードは FaceDirection を指定するために使用されます。
オブジェクトの子 として配置することで機能します。
FaceDirectionSettings で利用可能な設定は以下の通りです:
- 移動方向:常に現在の移動方向と同期します。
- 移動キー方向:常にオブジェクトに割り当てられた移動キー入力の方向と同期します。
- 変更しない(自由):アクションやスクリプトで変更されるまで、DisplayDirection を変更しません。
- 指定オブジェクトの方向:指定されたオブジェクトの方向を向きます。
- 指定グループ:指定されたグループ内の最も近いオブジェクトの方向を向きます。
FaceDirectionSettings の各設定は、実行アクション ChangeObjectProperty を使用して変更することもできます。
FaceDirection は DisplayDirection とは別変数ですが、前述の通り、各ステートの DisplayDirection 設定で FaceDirection を使用できます。
実行アクション:ChangeFaceDirection
このアクションは FaceDirection を変更します。
DisplayDirection を直接変更するわけではなく、FaceDirection そのもののみを変更します。
したがって、ステートの DisplayDirection 設定が 「FaceDirectionSettings を使用」 であり、FaceDirectionSettings が 「変更しない(自由)」 に設定されていない場合、手動での変更が直ちに上書きされる可能性があります。ご注意ください。
ChangeFaceDirection で利用可能なオプションは以下の通りです:
- 角度:0° から 360° の角度を指定します(右が 0°)。
- 方向:8方向から直接選択します。
- 変数:変数の値を度数として使用して方向を指定します。
- 移動方向:実行時の移動方向を向きます。
- 指定オブジェクト:指定されたオブジェクトの方向を向きます。
DisplayDirection と DisplayDirection 変数(visible_direction)
visible_direction 変数は、45度刻みで現在の向きを表します。
例:
- 右:0°
- 右下:45°
- 下:90°
この変数は、現在の向きを便宜的に示すための値であり、値を代入しても何の変化も起こりません。
したがって、現在の向きに対して相対的に方向を変更したい場合は、以下の手順を実行します:
- visible_direction 変数を別の変数 A に代入します。
- 変数 A に希望する角度値を加算します。
- ChangeFaceDirection アクションを使用して、変数 A に基づいて向きを変更します。
実用的な使用例
マリオ風のスライド移動
MoveAndJumpSettings で移動モードを 加速度 に設定し、Face Direction を 移動キー方向 に設定することで、キャラクターが反対方向を向いたままブレーキをかけるマリオ風の移動を実現できます。
移動せずに任意のスティック方向を向く
ChangeAngleSettings とグループへの向き設定を使用して実現できます。
手順:
- GameObject の子として Node2D を追加し、名前を
TargetRootに変更します。 TargetRootの子としてもう一つ Node2D を追加し、名前をTargetに変更します。Targetノードのインスペクターで、Transform の位置を x = 100, y = 0 に設定します。Targetノードに任意のグループ名を追加します。- GameObject の子として ChangeAngleSettings を追加します。
- ChangeAngleSettings のインスペクターで、右スティックを使用 または 左スティックを使用 を有効にし、
TargetRootをターゲットノードに設定します。 - FaceDirectionSettings で、
Targetノードに割り当てられたグループを追従するように設定します。
動作の仕組み
ChangeAngleSettings ノードは、スティック入力に応じて TargetRoot ノードを回転させます。
Target ノードは TargetRoot の右にオフセットされているため、TargetRoot を回転させると Target は円軌道上を移動します。
FaceDirectionSettings はこの回転する Target ノードを追従するため、オブジェクトがスティックの方向を向くことになります。
マウスカーソルを向く
まず、マウスカーソル用のオブジェクトを作成します。
手順:
- テンプレート GDScript_sample を使用して新しい GameObject を作成し、タイプを SimpleCursor に選択します。
SimpleCursor は、マウス位置を常に追従するスクリプトを持つノードです。 - SimpleCursor を保存し、ゲームシーンの UI レイヤー に配置します。
(通常のレイヤーに配置すると、オフセットやその他の変形の影響を受ける可能性があります。) - FaceDirectionSettings で、ターゲットオブジェクトを SimpleCursor に設定します。
追加の注意点
前述の例(「移動せずに任意のスティック方向を向く」)で、ChangeAngleSettings の マウスを使用 を有効にすることで、同様の動作を実現できます。