MRが楽しい

MRやVRについて学習したことを書き残す

Unityアニメーション講座 その2

本日はUnityアニメーションの講座の続きです。
f:id:bluebirdofoz:20170727024413j:plain

前回作成したプロジェクトに手を加えて、今度はキャラクタをアニメーションと共に操作してみます。
bluebirdofoz.hatenablog.com

前回作成したプロジェクトを開きます。
f:id:bluebirdofoz:20170727024435j:plain

初めに、ユニティちゃんがシーン内を走り回れるようシーンの準備を行います
まずは床を作成します。以下の手順でシーンに床を作成してください。
 1.Hierarchy 内で右クリックする。
 2.メニューから 3D Object -> Plane を選択する。
f:id:bluebirdofoz:20170727024445j:plain

以下のように、シーンに床が作成されます。
f:id:bluebirdofoz:20170727024455j:plain

次にユニティちゃんが床に立てるよう、ユニティちゃんに重力とアタリ判定を設定します。

まずは重力の設定です。
以下の手順で unitychan オブジェクトに Rigidbody コンポーネントを適用します。
 1.unitychan オブジェクトを選択する。
 2.Inpector タブの最下部にある Add Component をクリックする。
 3.「Rigidbody」を検索して、見つかったコンポーネントを選択する。
f:id:bluebirdofoz:20170727024506j:plain

以下のように Rigidbody コンポーネントが追加されます。
f:id:bluebirdofoz:20170727024514j:plain

ただし、このままだとユニティちゃんは重力に従って倒れ込んでしまいます。
以下のように Rigidbody の設定項目を変更します。これにより軸方向の回転が固定され、ユニティちゃんが転倒しなくなります。
Rigidbody
 Constrains
  FreezeRotatin X Y Z 全てチェック
f:id:bluebirdofoz:20170727024530j:plain

次に床とのアタリ判定の設定です。
以下の手順で unitychan オブジェクトに CapsuleCollider コンポーネントを適用します。
 1.unitychan オブジェクトを選択する。
 2.Inpector タブの最下部にある Add Component をクリックする。
 3.「Capsule Collider」を検索して、見つかったコンポーネントを選択する。
f:id:bluebirdofoz:20170727024543j:plain

以下のように CapsuleCollider コンポーネントが追加されます。
f:id:bluebirdofoz:20170727024554j:plain

初期状態の CapsuleCollider コンポーネントはユニティちゃんの足元に球体の形で追加されます。
これではユニティちゃんのアタリ判定として正しい動作をしません。
以下のように値を変更し、ユニティちゃんを包むような形にアタリ判定を修正します。
Capsule Collider
 Center X 0 Y 0.8 Z 0
 Radius 0.3
 Height 1.6
 Direction Y-Axis
f:id:bluebirdofoz:20170727024605j:plain

余談。
感の良い方はこのとき「床側のアタリ判定の設定は?」と考えるかもしれません。
床側のアタリ判定は Plane オブジェクトを追加した際、デフォルトで Mesh Collider コンポーネントが適用されています。
f:id:bluebirdofoz:20170727024630j:plain
この床の Mesh Collider と、ユニティちゃんの Capsule Collider が干渉することでユニティちゃんは床の上に立てる訳です。

さて、この時点で一旦、設定が正常に行えているか動作を確認します。
シーンの「再生」ボタンを押してみてください。床の上にユニティちゃんが立った状態になっていれば成功です。
f:id:bluebirdofoz:20170727024615j:plain
このとき、スペースキーを押してみてください。
特に何も起こりませんか?結構です。
最後にキーを押すとアニメーションをキックするスクリプトを追加しましょう。


ユニティちゃんの動きをコントロールするスクリプトを適用します。
以下の手順で unitychan オブジェクトに UnityChanControlScriptWithRgidBody コンポーネントを適用します。
 1.unitychan オブジェクトを選択する。
 2.Inpector タブの最下部にある Add Component をクリックする。
 3.「UnityChanControlScriptWithRgidBody」を検索して、見つかったコンポーネントを選択する。
f:id:bluebirdofoz:20170727024644j:plain

シーンの「再生」ボタンを押してみてください。
操作方法に関するパネルが表示されるようになっていれば適用されています。
f:id:bluebirdofoz:20170727024656j:plain

その状態で、スペースキーを押してみてください。ユニティちゃんが伸びをするアニメーションが始まります。
f:id:bluebirdofoz:20170727024708j:plain
他にも矢印キーの↑キーを押せば前進移動を行い、↓キーを押せば後退移動を行います。

スクリプトの適用により、キャラクタのアニメーションを操作できることが確認できました。
次回は追加したスクリプトの中身を確認し、アニメーションの仕組みを理解します。
bluebirdofoz.hatenablog.com