マニュアル:DisplayDirection と FaceDirection

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 を使用して変更することもできます。

FaceDirectionDisplayDirection とは別変数ですが、前述の通り、各ステートの DisplayDirection 設定で FaceDirection を使用できます


実行アクション:ChangeFaceDirection

このアクションは FaceDirection を変更します。

DisplayDirection を直接変更するわけではなく、FaceDirection そのもののみを変更します。

したがって、ステートの DisplayDirection 設定が 「FaceDirectionSettings を使用」 であり、FaceDirectionSettings が 「変更しない(自由)」 に設定されていない場合、手動での変更が直ちに上書きされる可能性があります。ご注意ください。

ChangeFaceDirection で利用可能なオプションは以下の通りです:

  • 角度:0° から 360° の角度を指定します(右が 0°)。
  • 方向:8方向から直接選択します。
  • 変数:変数の値を度数として使用して方向を指定します。
  • 移動方向:実行時の移動方向を向きます。
  • 指定オブジェクト:指定されたオブジェクトの方向を向きます。

DisplayDirection と DisplayDirection 変数(visible_direction)

visible_direction 変数は、45度刻みで現在の向きを表します。

例:

  • 右:0°
  • 右下:45°
  • 下:90°

この変数は、現在の向きを便宜的に示すための値であり、値を代入しても何の変化も起こりません。

したがって、現在の向きに対して相対的に方向を変更したい場合は、以下の手順を実行します:

  1. visible_direction 変数を別の変数 A に代入します。
  2. 変数 A に希望する角度値を加算します。
  3. ChangeFaceDirection アクションを使用して、変数 A に基づいて向きを変更します。

実用的な使用例

マリオ風のスライド移動

MoveAndJumpSettings で移動モードを 加速度 に設定し、Face Direction を 移動キー方向 に設定することで、キャラクターが反対方向を向いたままブレーキをかけるマリオ風の移動を実現できます。


移動せずに任意のスティック方向を向く

ChangeAngleSettings とグループへの向き設定を使用して実現できます。

手順:

  1. GameObject の子として Node2D を追加し、名前を TargetRoot に変更します。
  2. TargetRoot の子としてもう一つ Node2D を追加し、名前を Target に変更します。
  3. Target ノードのインスペクターで、Transform の位置を x = 100, y = 0 に設定します。
  4. Target ノードに任意のグループ名を追加します。
  5. GameObject の子として ChangeAngleSettings を追加します。
  6. ChangeAngleSettings のインスペクターで、右スティックを使用 または 左スティックを使用 を有効にし、TargetRoot をターゲットノードに設定します。
  7. FaceDirectionSettings で、Target ノードに割り当てられたグループを追従するように設定します。

動作の仕組み

ChangeAngleSettings ノードは、スティック入力に応じて TargetRoot ノードを回転させます。
Target ノードは TargetRoot の右にオフセットされているため、TargetRoot を回転させると Target は円軌道上を移動します。
FaceDirectionSettings はこの回転する Target ノードを追従するため、オブジェクトがスティックの方向を向くことになります。


マウスカーソルを向く

まず、マウスカーソル用のオブジェクトを作成します。

手順:

  1. テンプレート GDScript_sample を使用して新しい GameObject を作成し、タイプを SimpleCursor に選択します。
    SimpleCursor は、マウス位置を常に追従するスクリプトを持つノードです。
  2. SimpleCursor を保存し、ゲームシーンの UI レイヤー に配置します。
    (通常のレイヤーに配置すると、オフセットやその他の変形の影響を受ける可能性があります。)
  3. FaceDirectionSettings で、ターゲットオブジェクトを SimpleCursor に設定します。

追加の注意点

前述の例(「移動せずに任意のスティック方向を向く」)で、ChangeAngleSettings の マウスを使用 を有効にすることで、同様の動作を実現できます。