Animation Riggingでプレイヤーがターゲットの方向をリアルタイムに見続けるようなアニメーションをするようにします。
※説明があっているかわからないが、Animation Riggingを使えば、既存のアニメーションの一部を上書きすることができる。(例えば、既存の正面を向いて歩くアニメーションに対して、Animation Riggingを行えば、頭はターゲットの方向を向いて歩くようにできる)
まだ”Animation Rigging”パッケージをインストールしていない方は、以下の記事を参考にインストールしてください。
![](https://programming.sincoston.com/wp-content/uploads/2018/12/cropped-icon.jpg)
プレイヤーとしては以下を使います。
完成動作
ターゲットを動かすと、unity-chanがその方向を見ます。
※最後まで作成し、頭も上半身も動くようになったパターン
作り方
1.シーンに各オブジェクトを配置
1-1.以下のように配置する。床をPlane、Animation Riggingを行うキャラクターをunity-chanとした。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-17.png)
2.Bone Rendererコンポーネントをアタッチ
これは必須ではないが、Bone Rendererコンポーネントを付けると、スケルトン(ボーン)をシーンビューで視覚的に見えるように表示でき、また、シーンビュー上でボーンをマウスで選択して操作できるようになる。
2-1.Hierarchyタブでunitychanを選択
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-18.png)
2-1.上部のメニューの”Animation Rigging”→”Bone Renderer Setup”を押下
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-19.png)
2-1.unitychanにBone Rendererコンポーネントが追加されることを確認
※このやり方でやると、Transformsプロパティに自動的に各ボーンが適用されるので便利
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-20.png)
2-2.シーンビューを見るとunitychanに青い線でボーンが表示される。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-21.png)
3.Rig(リグ)を作成
3-1.Hierarchyタブでunitychanを選択
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-18.png)
3-2.上部のメニューの”Animation Rigging”→”Rig Setup”を押下
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-22.png)
3-3.unitychanに自動的に”Rig Builder”コンポーネントが追加され、さらに、unitychanの子要素として”Rig 1″オブジェクトが作成される。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-23.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-24.png)
4.ターゲットを作成
unitychanの頭が向く方向の目印としてのターゲットを作成する。
4-2.”Rig 1″オブジェクトの子要素に空のオブジェクト(Create Empty)を作成
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-25.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-26.png)
4-2.作成した空のゲームオブジェクトの名前を”HeadAim”にする。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-27.png)
4-3.同様にして、”HeadAim”オブジェクトの子要素に空のゲームオブジェクトを作成し、名前をターゲットとする。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-28.png)
4-4.Targetオブジェクトの位置をunitychanの顔の正面辺りに移動する。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-29.png)
4-5.シーンビューの右下に表示されている、以下の項目の+を押下し、
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-30.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-31.png)
ShapeやSizeを以下のようにすると、
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-32.png)
以下のように、Targetオブジェクトが赤い円状になり、見やすくなる。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-33.png)
5.unitychanの頭がターゲットの方向を見るように設定
5-1.”HeadAim”オブジェクトを選択し、”Multi-Aim Constraint”コンポーネントを追加
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-34.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-36.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-37.png)
5-2.”Constrained Object”プロパティにunitychanの頭のオブジェクトをアタッチ
※unitychanの頭は、”Character1_Head”オブジェクトなのでこれをアタッチ
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-38.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-39.png)
5-3.”Aim Axis”プロパティをYにする。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-40.png)
5-4.”Source Objects”プロパティに”Target”オブジェクトをアタッチ
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-41.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-42.png)
5-5.頭の回転できる角度を調整する。
デフォルトのままだと、ターゲットをunitychanの真後ろに持っていったりすると、頭がありえない角度になるので、調整する。
“Setting”プロパティ内の”Min Limit”と”Max Limit”を任意の値にすることで調整できる。
今回は以下のようにした。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-44.png)
6.実行して動作を確認
実行後に、シーンビューにして、”Target”オブジェクトを動かすと、unitychanの頭が”Target”オブジェクトを追いかけている。
※髪の毛も頭と同じように動くので不自然ではあるが、これの解消方法は私の今の知識では不明なので、いつかわかり次第追記します。
7.上半身も連動して動くようにする
ここまでの状態だと、頭のみがターゲットを追いかけるため、実際の人間の動作としては不自然なので、上半身も頭に連動して動くようにする。
7-1.”HeadAim”オブジェクトを選択して、右クリック→Duplicateし、複製する。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-45.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-46.png)
7-2.複製した”HeadAim (1)”の名前を”ChestAim”にし、その子要素の”Target”オブジェクトは削除する。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-47.png)
7-3.”HeadAim”オブジェクトの子要素の”Target”オブジェクトを”Rig 1″の子要素に変更する。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-48.png)
7-4.”ChestAim”オブジェクトを選択する。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-49.png)
7-5.”Source Objects”プロパティに”Target”オブジェクトをアタッチ
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-50.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-51.png)
7-6.”Constrained Object”プロパティにunitychanの背骨のオブジェクトをアタッチ
※unitychanの背骨は、”Character1_Spine”オブジェクトなのでこれをアタッチ
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-52.png)
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-53.png)
7-7.”ChestAim”オブジェクトの”Source Objects”プロパティのTargetのweightを0.3ぐらいにする。
この値を小さくすると、Targetの移動に対する、上半身の向く角度が小さくなる。
1だと、上半身が頭と同じだけ回転して不自然なので、0.3にして上半身はあまり回転しないようにした。
![](https://programming.sincoston.com/wp-content/uploads/2022/09/image-54.png)
8.実行して動作を確認
実行後に、シーンビューにして、”Target”オブジェクトを動かすと、unitychanの上半身も”Target”オブジェクトの方向を向くようになっている。
コメント