【UnityC#講座】ユニティちゃんにキソラちゃんがついてくるようにする【NavMeshAgent、Blend Tree】

【Unity講座】ユニティちゃんにキソラちゃんがついてくるようにする【NavMeshAgent、Blend Tree】

Unity5.6.0f3
Windows10

【Unity講座】ユニティちゃんにキソラちゃんがついてくるようにする【NavMeshAgent、Blend Tree】

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています

【Unity講座】3D人型モデルの動かし方をユニティちゃんで学ぶ【Animator】

今回はこの記事の続きです。
前回設定したユニティちゃんの後ろに仲間が付いて来るようにします。
主に使う機能はNavMeshAgentBlend Treeです。
さて、前回の「Person Control」プロジェクトを開いてキソラちゃん(Amane Kisora-chan(FREE ver))をダウンロードしましょう。
もちろん全てImportします。

■NaveMeshAgentで動かす準備をする

まずは土台を作りましょう。
NaveMeshAgentでキソラちゃんを移動させますが、その移動する地面の設定が必要です。
それでは障害物となるCubeを出してください。

Hierarchy > Create > 3D Object > Cube

Person Control2/障害物のCubeの位置

私はこのような位置にしましたが、別にPlanの上でキャラクターが当たるような高さならどこでも良いです。

次はCubeInspectorの右上にStaticがあるので▼の印をクリックしてNavigation Staticを選んでください。
NaveMeshに対応させるのに必要です。

Person Control2/Navigation Static

次はメニューのWindowからNavigationを選びます。
そしてHierarchyPlaneを選んでから、出たNavigationObjectタブのNavigation Staticのチェックを入れると先ほど設定したCubeが障害物として設定されます。
最後にBakeタブのBakeをクリックしてください。

Person Control2/NavMeshをBake

Sceneで見るとこうなりました。
水色の部分がNaveMeshAgentが移動できるところでCubeを避けているのが分かると思います。

次はキソラちゃんを出します。

Assets > SapphiArt > SapphiArtchan > OBJ > SapphyArtchan

SapphyArtchanSceneからHierarchyにドラッグ&ドロップしてください。

Person Control2/キソラちゃんをSceneへ

Inspector > AddComponent > NaveMeshAgent

キソラちゃんにNaveMeshAgentコンポーネントを入れてください。

スポンサーリンク

■Blend TreeでAnimationの遷移を設定する

Blend Treeは前回使ったAnimation Controllerの機能のひとつでAnimationを細かく遷移させることができます。
例えば静止状態→歩行→走行、といったような形で滑らかに移り変わらせることができるのですが、今回は静止状態→走行だけです。

Project > Create > Animator Controller

さて前回と同じくAnimator Controllerを出しましょう。
名前は「KisoraChanAction」にしました。

Person Control2/Parameters

まずは左上のParametersをクリック。
Floatを選び、名前をSpeed、そして0.1と入れます。

Person Control2/From New Blend Tree

次に罫線の部分を右クリック。
今回はFrom New Blend Treeを選びます。
そうするとBlend Treeと書かれたアイコンが出てくるのでそれをダブルクリックしてください。

Person Control2/Blend Tree

InspectorBlend Treeの設定画面が出るので画像のように設定します。
まずはParameterを右端の▼から先ほど作ったSpeedを選択。
Motionをクリックし、Add Motion Fieldを選択。
出て来たNone(Motion)にキソラちゃんアセットに入っていたアニメーションをセットします。

Project > Assets > SapphiArt > SapphiArtchan > Animation

そこにあるidlerunningをドラッグ&ドロップします。
そしてAutomate Thresholdsのチェックを外すとThresholdが操作できるようになるのでrunningを0.1にしてください。
入力してからその欄の外側をクリックすれば確定されます。
Thresholdの値をスクリプトでキソラちゃんが動くスピードと照らし合わせてアニメーションを遷移させるのですが、今回は走らせるだけでなので少しでも動いたら遷移されるように数値をごくわずかにしました。

Person Control2/AnimatorControllerをキソラちゃんにドラッグ&ドロップ

そしてできたKisoraChanActionをキソラちゃんのAnimatorControllerにドラッグ&ドロップします。

Person Control2/Remove Component

あと初めから入っていたSapphi Art Chan_Anim Managerスクリプトはいらないので消しましょう。
右端の歯車アイコンをクリック、Remove Componentをクリックで消せます。

Person Control2/NaveMeshAgentセット

おっと、一番大事なNavMeshAgentを忘れていました。
これもAdd Componentで追加しておいてください。

■スクリプトをセットする

キソラちゃんにセットするスクリプトを書きます。
名前を「Following」にしました。

Person Control2/Followingスクリプトにユニティちゃんセット

キソラちゃんにスクリプトをドラッグ&ドロップしたら、そのInspectorにユニティちゃんをドラッグ&ドロップしてください。

これでキソラちゃんがユニティちゃんについてきてくれます。
元々のスピードだとキソラちゃんが早くて滑らかに走ってくれないのでInspectorNavMeshAgentのSpeedを2にすると良くなります。

Person Control2/GIFアニメ、ユニティちゃんに付いて来るキソラちゃん

Person Control2/GIFアニメ、ユニティちゃんに付いて来るキソラちゃん、Scene、NaveMesh

なぜかNavMeshの青い地面が途切れているけども問題ありません。
ちゃんと障害物のCubeを避けて移動しているのが分かると思います。

さてあなたのキソラちゃんはちゃんと走って移動したでしょうか?
これで今回は終わりです。

■関連記事

【UnityC#講座】AnimatorControllerを使いまわす【AnimatorOverrideController】

【UnityC#講座】AnimatorControllerの使い方

【UnityC#講座】ユニティちゃんをモブキャラのごとくランダム移動させる【NavMeshAgent】

スポンサーリンク

目次に戻る