前回は Unity で見下ろし型ゲームを作るアセット TopDown Engine のサンプルゲーム Koala Dungeon の画面左上の HUD がどのように設定されていて、それを消した際の影響などを調べました。

HUD が必要ない場合削除するだけでもプレイはできますが、GUIManager の設定は Missing と表示されます。
今回は、銃の攻撃方向をゲームパッド (Xbox 互換) の右スティックで操作できるようにします。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1 です。主人公のキャラクター画像はぴぽや倉庫様のキャラクターチップを使っています。
デフォルトの入力設定
公式の Input | TopDown Engine Documentation では、以下のようにキーボード+マウスの場合とゲームパッドの場合の操作方法の初期設定が説明されていました。

TopDown Engine公式の Default Input の説明画像 参照:https://topdown-engine-docs.moremountains.com/input.html
しかし、なぜか右スティックで Secondary Movement (AIM) の操作をしようとしても受け付けてくれません。マウスを動かすと反応するので、AIM 機能としては実装されているのに、入力がうまく伝わっていない、または別の入力が割り当てられているのではないかと思いました。

KoalaDungeon ではゲームパッドの左スティックで移動、RTボタンで連射ができますが、発射する向きがマウスと違い変えられません。
右スティックの入力の確認
KoalaDungeon の初期状態では、右スティックを傾けても、前述の説明のような AIM (狙う方向の指示) はできません。その原因を探るために、そもそも右スティック入力が Secondary Movement として認識されているのか確認します。
主人公 (Rei-chan) プレハブの CharacterHandleWeapon コンポーネントの Use Secondary Axis Threshold To Shoot を有効にしてテストプレイすると向きは変わりませんでしたが、右スティックを傾けただけで攻撃ができました。
これにより、右スティックが Secondary Movement (AIM) に対応していることが確認できました。

主人公ゲームオブジェクトの CharacterHandleWeaponコンポーネントの Use Secondary Axis Threshold To Shoot を有効にすると右スティック傾けで攻撃が発生
そして、テストプレイ中にマウスポインタの方を武器が向いていることから、マウスの位置に武器の向きが連動しており、マウスでのみ照準が制御されていることがわかりました。
AIM 入力方法の設定変更
Weapons | TopDown Engine Documentation には WeaponAim2D/3D コンポーネントで攻撃方向を特定の入力に変えられるように設定する説明があります。
WeaponAim2D/3D コンポーネントは、武器のプレハブに付加されます。

武器のプレハブにWeaponAimコンポーネントが追加されていて AimControl は Mouse になっています。
武器のプレハブを探したときの手順
シーンの銃のアイコンから武器のプレハブまで、次のようにリンクをたどりました。
まず、シーンのマップに配置された武器アイコンをクリックし、 Inspector ウィンドウで ItemPicker コンポーネントの Item の項目をクリックします。

KoalaDungeon マップの銃のアイコンから銃のプレハブにたどり着く手順1
たどりついた asset の InventoryWeapon コンポーネントの Equippable Weapon の要素をクリックします。

KoalaDungeon マップの銃のアイコンから銃のプレハブにたどり着く手順2
WeaponAim2D コンポーネントを持った武器のプレハブにたどり着きました。

KoalaDungeon マップの銃のアイコンから銃のプレハブにたどり着く手順3
銃のプレハブの AIM 入力の変更
たどりついた銃のプレハブの WeaponAim2D コンポーネントの Aim Control の設定が Mouse になっていました。
Aim Control の設定を Mouse から Secondary Movement に変更します。

WeaponAim2Dコンポーネントの AimControl の選択を切り替えます。
テストプレイすると、マウスポインタの位置は無視され、ゲームパッドの右スティックに応じて武器の向きが変わるようになりました。

KoalaDungeon の武器プレハブの WeaponAim2DのAimControlをMouseからSecondaryMovementに切り替えると、マウスポインタの位置が無視され、ゲームパッドの右スティックに従うようになりました。
一応、右スティックで攻撃方向を指定することはできましたが、できれば、マウスを動かしたときはマウスポインタの方向に動くように、プレイ中に自動的に切り替えたいです。
今回と同じくわかるかどうかはわかりませんが、次回はそれについて調べようと思います。
コメント