ACTION GAME MAKER では、各ステートに 表示方向(DisplayDirection) というシステムが搭載されており、オブジェクトの向きに応じて対応する方向のアニメーションを再生できます。
本マニュアルでは、表示方向(DisplayDirection) の制御方法について説明します。
表示方向(DisplayDirection) をサポートするアニメーションセットの説明については、以下をご参照ください:
表示方向システムの概要
表示方向(DisplayDirection) は 8方向 に設定できます。
表示方向の設定方法
表示方向(DisplayDirection) は、各ステートの 「表示方向(DisplayDirection)」 項目で変更できます。
また、FaceDirectionSettings ノード で設定した 視線方向(FaceDirection) を使用することで、より細かい制御が可能です。
各ステート内の「表示方向(DisplayDirection)」設定
表示方向(DisplayDirection) は以下のオプションから選択できます:
- 移動方向:常に現在の移動方向と同期します。
- 移動キー方向:常にオブジェクトに設定された移動キー入力方向と同期します。
- 右 / 左:常に右または左を向きます。
- FaceDirectionSettings 使用:後述の FaceDirectionSettings ノードで設定した 視線方向(FaceDirection) に基づいて向きを決定します。
設定された 表示方向(DisplayDirection) は、同一ステート中は変更されません。
FaceDirectionSettings ノード(視線方向設定)
このノードは 視線方向(FaceDirection) を指定するためのものです。
オブジェクトの子ノードとして配置することで有効になります。
FaceDirectionSettings では以下の設定が可能です:
- 移動方向:常に現在の移動方向と同期します。
- 移動キー方向:常にオブジェクトに設定された移動キー入力方向と同期します。
- 固定(Free):アクションやスクリプトで変更されるまで、表示方向は変更されません。
- 指定オブジェクトの方向:指定したオブジェクトの方向を向きます。
- 指定グループ:最も近い指定グループのオブジェクトの方向を向きます。
FaceDirectionSettings の各設定は、アクション 「オブジェクトプロパティ変更(ChangeObjectProperty)」 を実行することで変更することもできます。
視線方向(FaceDirection) は 表示方向(DisplayDirection) とは独立した変数です。
ただし、前述の通り、各ステートの表示方向(DisplayDirection)設定で、視線方向(FaceDirection)を表示方向として使用できます。
アクション「視線方向変更(ChangeFaceDirection)」の実行
このアクションは 視線方向(FaceDirection) を変更するためのものです。
注意点として、これは直接 表示方向(DisplayDirection) を変更するものではなく、あくまで 視線方向(FaceDirection) を変更します。
したがって、ステートの 表示方向(DisplayDirection) が 「FaceDirectionSettings 使用」 に設定されており、かつ FaceDirectionSettings が 「固定(Free)」 でない場合、変更してもすぐに上書きされる可能性があるためご注意ください。
「視線方向変更(ChangeFaceDirection)」では以下の設定が可能です:
- 角度:右方向を 0° として、0°~360° の範囲で指定します。
- 方向:8方向から直接選択します。
- 変数:変数の値(角度)を使用して方向を指定します。
- 移動方向:実行時の移動方向を向きます。
- 指定オブジェクト:指定したオブジェクトの方向を向きます。
表示方向(DisplayDirection)と表示方向変数(visible_direction)
visible_direction 変数は、現在の向きを 45 度単位で表します。
例:
- 右:0°
- 右下:45°
- 下:90°
この変数は、現在の向きを簡便に表すためのものです。
この変数に値を代入しても、何の変化も生じません。
そのため、現在の方向を基準にオフセット調整したい場合は、以下の手順で実現できます:
- visible_direction 変数の値を別の変数 A に代入します。
- 変数 A に希望する角度値を加算します。
- 「視線方向変更(ChangeFaceDirection)」アクションを使用し、変数 A の値に基づいて向きを変更します。
表示方向の応用例
マリオ風のスライド移動
MoveAndJumpSettings で移動モードを 加速度(Acceleration) に設定し、
表示方向を 移動キー方向(Movement Key Direction) に設定することで、
反対方向を向いた状態でブレーキをかけるマリオ風の移動が実現できます。
移動しない状態で任意のジョイスティック方向を向く
ChangeAngleSettings と「指定グループを向く」を使用することで実現できます。
手順:
- GameObject の下に Node2D を追加し、
TargetRootと名前を変更します。 TargetRootの下にさらに Node2D を追加し、Targetと名前を変更します。Targetノードの Inspector → Transform で、位置を x = 100, y = 0 に設定します。Targetノードに任意の名前のグループを追加します。- GameObject の下に ChangeAngleSettings を追加します。
- ChangeAngleSettings の Inspector で、右スティック使用 または 左スティック使用 を有効にし、ターゲットノードを
TargetRootに設定します。 - FaceDirectionSettings で、
Targetノードが属するグループを追跡するように設定すれば完了です。
動作原理の説明
ChangeAngleSettings ノードは、ジョイスティック入力に応じて TargetRoot ノードを回転させます。
Target ノードは TargetRoot に対して右方向にオフセットされているため、TargetRoot が回転すると Target は円運動を行います。
FaceDirectionSettings はこの円運動する Target ノードを追跡するため、オブジェクトはジョイスティックの方向を向くことになります。
マウスカーソルを向く
まず、マウスカーソル用のオブジェクトを作成します。
手順:
- テンプレート GDScript_sample を使用して新しい GameObject を作成し、タイプを SimpleCursor に選択します。
SimpleCursor は常にマウス位置に追従するスクリプトノードです。 - SimpleCursor を保存し、ゲームシーンの UI レイヤー に配置します。
(通常のレイヤーに配置すると、オフセットなどの影響を受ける可能性があります。) - FaceDirectionSettings で、ターゲットオブジェクトを SimpleCursor に設定します。
補足説明
前述の例「移動しない状態で任意のジョイスティック方向を向く」において、
ChangeAngleSettings で マウス使用(Use Mouse) を有効にしても、同様の効果が得られます。