マニュアル:表示方向(DisplayDirection)と視線方向(FaceDirection)

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°

この変数は、現在の向きを簡便に表すためのものです。
この変数に値を代入しても、何の変化も生じません。

そのため、現在の方向を基準にオフセット調整したい場合は、以下の手順で実現できます:

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

表示方向の応用例

マリオ風のスライド移動

MoveAndJumpSettings で移動モードを 加速度(Acceleration) に設定し、
表示方向を 移動キー方向(Movement Key Direction) に設定することで、
反対方向を向いた状態でブレーキをかけるマリオ風の移動が実現できます。


移動しない状態で任意のジョイスティック方向を向く

ChangeAngleSettings と「指定グループを向く」を使用することで実現できます。

手順:

  1. GameObject の下に Node2D を追加し、TargetRoot と名前を変更します。
  2. TargetRoot の下にさらに Node2D を追加し、Target と名前を変更します。
  3. Target ノードの Inspector → Transform で、位置を x = 100, y = 0 に設定します。
  4. Target ノードに任意の名前のグループを追加します。
  5. GameObject の下に ChangeAngleSettings を追加します。
  6. ChangeAngleSettings の Inspector で、右スティック使用 または 左スティック使用 を有効にし、ターゲットノードを 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 で マウス使用(Use Mouse) を有効にしても、同様の効果が得られます。