キャラクターが対象を見続けて上半身も連動する処理、
昔はUnityがHead Look Controllerってアセット出してたけど現在は削除されてる
FinalIKアセットを使うか、自前で実装するか、アバターマスクでなんかやるかかなーと思ってたけど
現在はAnimation Riggingで実装するのが良さそう?
https://docs.unity3d.com/ja/Packages/com.unity.animation.rigging@1.2/manual/constraints/MultiAimConstraint.html
FinalIKは持ってるけど今回はコレつかって実装してみる
Package Managerでパッケージマネージャーから
Animation Riggingをインストール
Animatorを付けているモデルを選択
メニューからAnimationRigging>RigSetupを選択
対象モデルにRigBuilder、対象モデルの子にRig1というオブジェクトが追加される
Rig1オブジェクトの子供に空のゲームオブジェクトを追加しMulti-Aim Constraintコンポーネントを付ける
(オブジェクト名はaimHeadとした)
ConstrainedObjectに3Dモデルの頭部分を指定する
SourceObjectに見続ける対象(カメラとか)を指定する
首の向きがおかしい場合
AimAxisとUpAxisを正しく設定する
(これはゲーム開始前に設定する必要がある、実行中に変更しても反映されない)
SourceObjectsも実行中には切り替え不可なため、最初から対象を複数設定しておきweightを変更して切り替える
MaxLimitは60くらいに設定
ここまでで頭の動きはOK
上半身も連動して動くようにする
Multi-AimConstraintが付いているaimHeadを複製してConstrainedObjectに上半身を設定するだけ。
ただし上半身→頭の順番で設定しないとだめ、逆にするとおかしくなる。
頭→上半身の順番にするとこんな感じで目線が合わなくなる
これで上半身も一緒に動いてくれるようになった
終了!
以下はMulti-AimConstraintとMulti-RotationConstraintを使って上半身を動かそうとして失敗した時のやつ。
デモシーンとかドキュメント見るとMulti-RotationConstraintは指定したオブジェクトをターゲットとして連動して回転するらしいので、上半身用のモノだと勘違いしてた。
※コメントは承認後に表示されます。
コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。