この記事でのバージョン
Unity:2020.3.3f1
TopDown Engine:バージョン 2.3.1
はじめに

TopDown Engineについての記事です。
TopDown Engineには武器の狙いとして、以下の物が実装されています。
- PrimaryMovement:移動スティック/キーの方向
- SecondaryMovement:パッドでいう右スティックの方向
- PrimaryThenSecondaryMovement:上記PrimaryがあるときはPrimary、無い場合はSecondary
- SecondaryThenPrimaryMovement:上記の逆
- Mouse:マウスの向き
- Script:別のスクリプトで制御
この中でロックオンはScriptに当たります。
やりたいことは、通常時はPrimaryMovement、敵接近時は自動でScriptに切り替える、です。
やり方
前提として、既に武器は作成している、3D武器とします。(Projectile WeaponかMelee Weaponスクリプトを実装済み)3Dと2Dはスクリプトが別にあります。
①作成した武器にWeapon Aim 3Dスクリプトを追加。

②Aim ControlをPrimary Movement。

③武器にWeapon Auto Aim 3Dスクリプトを追加。

④Targets Maskにロックオンしたいものを追加。(画像はEnemiesのみ)

⑤武器に空のゲームオブジェクトを2つ追加し、名前をFeedback等に変更。

⑥それぞれにMMFeedbacksスクリプトを追加し、Add new feedback…→Events→Eventsを選択。

⑦片方のFeedbackにPlay Events()欄に武器(Weapon Aim 3Dスクリプトを追加しているオブジェクト)をアタッチし、WeaponAim3D→GetScriptAim()を選択。

⑧もう片方のFeedbackもPlay Events()欄に武器をアタッチし、WeaponAim3D→GetPrimaryMovementAim()を選択。

⑨Weapon Auto Aim 3DのFeedbackに先ほど作成したFeedbackをアタッチ。FirtsとNew Targetの方にScriptAim、No More Targetの方にPrimary Aimをアタッチする。

⑩Scan for Targetsでロックオンの距離等の設定を行う。(Scan Radiusは検出範囲、Duration Between Scansは検出間隔)

これで武器の設定がおわりました。
敵がいないときはキャラの正面を狙っていて、近づくと自動でロックオンすると思います。
最後に
本当はボタンを押したら切り替えるみたいな仕様がいいだろうと思いましたが、モバイル向けだとこっちの仕様がいいのかなと思って実装してみました。
これは武器ごとに設定できるので、色々試していくと面白いかもです。
終わり!