前回は Unity で見下ろし型ゲームを作るアセット TopDown Engine のサンプルゲーム Koala Dungeon の銃の攻撃方向をマウスと右スティック(Secondary Movement)で両立する方法を探しました。
公式マニュアルや Demos のサンプルを見て、WeaponAim2D コンポーネントを持ちつつ、それを外部から操作するコンポーネント(例としては WeaponAutoAim2D.cs )を作ることができれば実現できそうだと思いました。

WeaponAim(AimControlはScript) を取得参照しているスクリプトコンポーネントが同じゲームオブジェクト内にありました。
今回はそれとはまったく別の方法として、Unity の InputManager でマウスと右スティックの入力を同じ仮想の入力名で扱う方法を思いついたのでそれの検証します。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1 です。主人公のキャラクター画像はぴぽや倉庫様のキャラクターチップを使っています。
Unity の InputManager による仮想の入力
Unity 標準の InputManager ではボタンや軸やキー名のかわりに Jump など任意の入力名による仮想的な入力が設定できます。
影響範囲が大きいので、フルスクラッチなら大丈夫かもしれませんが、 TopDown Engine などの外部アセットを使うため、仮装入力をいじっておかしな影響がでないか少し心配ですが、思いついたので試してみました。
方法は簡単で、 MouseX, MouseY の入力に対して、右スティック入力と同じ Secondary Movement (Player1_SecondaryHorizontal, Player1_SecondaryVertical) を入力名として、マウスと右スティックどちらの入力も同じ名前の入力にしてしまうということです。
メニュー[Edit]→[Project Settings] で Project Settings ダイアログを開き Input Manger を選択し、 Size の値を 116 から 118 に変更し、項目数を 2 つ増やしました。
※ TopDown Engine のインポートによって設定が追加されたようです。

Unity InputManager で入力設定を 2 つ増やしました。
仮想の入力名は右スティック入力の X, Y と同じですが、入力元はマウスの X, Y 軸です。

InputManager に追加した二つの仮装入力の設定(右スティック入力の仮装入力名だけどマウス入力)
既存の右スティック入力 X, Y の Player1_SecondaryHorizontal, Player1_SecondaryVertical は変更していません。
Player1_SecondaryHorizontal, Player1_SecondaryVertical という仮装の入力が右スティックとマウスの二組になりました。
注意点
使用する武器プレハブ(Assets/TopDownEngine/Demos/Koala2D/Prefabs/Weapons/WeaponsAmmoBased/KoalaRifleAmmoBased.prefab) の WeaponAim2D コンポーネントの AimControl は 前々回に Mouse から 右スティック (Secondary Movement) に変更しています。
テストプレイ
テストプレイすると、右スティックで向きをかえ RT ボタンで発射しています。
また、マウスをスクリーン内に入れて左ボタンを押すと照準マークの方角に発射しています。
これで右スティックとマウスの両立はできたように思えますが、影響範囲が大きそうなのが心配です。

TopDownEngine のサンプルで右スティックとマウスでのAIMの両立を InputManager の同一入力名設定で実装

KoalaDungeon Unity InputManager でマウスからも Secondary Movement の仮装入力を設定すると右スティックとマウスどちらからもAImと攻撃ができました。
一つの実現手段として InputManager による多重の仮想の入力設定を覚えて置き、影響範囲が少なそうな WeaponAim を操作するコンポーネントの作成についてもやはり調べてみようと思います。
コメント