2017.04.12
第2回目:Head Look Controller
今回紹介するAssetは、「Head Look Controller」です。これは3Dモデルの視線が、動くものを追いかけるという機能を持っています。
Head Look Controllerのインポート
Asset Storeの検索欄に「Head Look Controller」と入力すると表示されます。初めての場合は「ダウンロード」→「インポート」と表示されます。筆者は何度も使用していますので、「インポート」と表示されています(図1)。
図1から「インポート」をクリックすると、UnityのScene画面のProject内に図2のようなフォルダが作成され、必要なファイルが取り込まれます。
“unitey-chan!”ModelとCartoon BigHead Starterのインポート
次にAsset Storeから「“Unity-chan!”Model」と「Cartoon BigHead Starter」という3DモデルのAssetを「インポート」しておいてください。検索欄に、それぞれの名前の一部を入力すると表示されます。すると、図2の中に、これらのファイルが取り込まれます(図3)。
次にインポートした3Dモデルを動かすためのAssetをインポートします。
Mecanim Locomotion Starter Kitのインポート
Asset Storeの検索欄に「Mecanim Locomotion」と入力すると表示されますので、インポートしてください(図4)。このAssetには、3Dモデルをコードレスで動かすためのコントローラーやスクリプトが含まれています。
先と同じようにProject内にファイルが取り込まれます。
では、次に舞台を作っていきます。
舞台を作る
HierarchyのCreateから「3D Object」→「Plane」と選択すると、Scene画面内にPlaneが配置されます。これは「床」のようなものです。
このPlane上にunitychanとBigHeadsを配置します。
UnitychanとBigHeadsを配置する
Planeの上に、Project内の「Assets」→「UnityChan」→「Models」フォルダ内の「unitychan.fbx」をPlane上に配置します。次に、「Assets」→「BigHeads」→「BigHeadsStarter」フォルダ内の「BigHead.fbx」を配置します。
Game画面で見ると、unitychanがカメラに背を向けていますので、Hierarchyからunitychanを選択して、InspectorのTransformのRotationの「Y」に「180」と指定してください。unitychanがカメラの方を向きます。同じく配置したBigHeadsはサイズがunitychanより大きくなっていますので、BigHeadsのInspectorからTransformのScaleの「X」、「Y」、「Z」に「0.5」と指定してサイズを小さくしておきます。また、これもカメラの方を向くようにRotationの「Y」に「180」と指定してください。Main Cameraの位置を調節して図5のように表示されるようにしてください。
次にunitychanのInspectorを設定します。
unitychanのInspectorを設定する
Hierarchyからunitychanを選択してInspectorを表示します。AnimatorのControllerに右隅にある「」(〇に・)のアイコンをクリックして「Locomotion」を選択してください。この「Locomotion」は図4で「Mecanim Locomotion Starter Kit」をインポートしたときに取り込まれたコントローラーです。
次に「Add Component」の検索欄に、「Head」と入力すると、「Head Look Controller」が表示されますのでこれを選択します。unitychanのInspectorに「Head Look Controller(Script)」が追加されます。
Segmentsを展開してSizeに「2」と入力してください。同じくNon Affected JointsのSizeに「2」と入力してください。すると、それぞれにElement0とElement1が表示されますので、これらを展開してください。図6のようになっていると思います。
図6のSegmentsとNone Affected Jointsの「Element0」と「Element1」に図7のような値を指定してください。右隅に「」(〇に・)のある項目は、このアイコンをクリックして選択してください。その後の値は「Assets」→「Head Look Controller」にある「Head Look Test.unity」を開いて、Hierarchy内の「Human」を選択したInspector内の値を参考にしています。これらの項目は何をするものかについては一切説明がありませんので、各自がいろいろな値を設定して、動作を確認しながら設定する以外に方法がありません。
次にBigHeadsのInspectorを設定します。
BigHeadsのInspectorを設定する
HierarchyからBigHeadsを選択して、Inspectorを表示します。AnimatorのControllerに「Locomotion」を指定します。次に「Add Component」から「Physics」→「Character Controller」を選択します。その中のCenterの「Y」に「1」を指定してください。衝突判定をする場合には、ここを「1」に指定しておく必要があります。今回は衝突判定は関係ないのですが、「Y」に「1」を指定しておかないと、身体の中心がズレれて、BigHeadsがすこし宙に浮いた状態になってしまいます。同じく「Add Component」から「Script」→「Locomotion Player」と選択してください。
「Add Component」の検索欄に「Cursor」と入力して、表示される「Cursor Hit」を選択してください。Head Lookの項目には「unitychan」を指定します。図8のようになります。
この設定だけで、BigHeadsはキーボードの「左右上下矢印キー」で自由に走りまわることが可能になります。
では、最後にコードの修正を行います。
CursorHit.csファイルの修正
図8からScriptの「CursorHit」をダブルクリックします。するとVS2017が起動してコードが表示されますので、図9のように不要な個所をコメントアウトしてください。ここをコメントアウトしていないと、BigHeadが走り回るたびに不用意にジャンプしてしまいますので、注意してください。最初に動作させた場合は、ジャンプをしてしまいますが、その後はジャンプはしませんので、ご安心ください。
Playしたのが図9になります。
実際に動かしたのが動画1になります。
今回は3Dオブジェクトが動くものを視線で追いかける処理を解説しました。図7で指定した項目の値は、なかなかわかり辛いと思いますが、先に書いていたようにサンプルのSceneを参考にして設定してください。今回は動く対象に、これも3Dモデルを使用しましたが、動物でも、飛行機でも、動くものなら何でも指定が可能です。ぜひ試してみてください。
次回は、空飛ぶクジラを実現する「Humpback Whale(無料)」について解説します。お楽しみに。