IshidaGames【UnityC#講座】ユニティちゃんをモブキャラのごとくランダム移動させる【NavMeshAgent】Tweetnoteで管理人イシゲーのゲームの思い出記事を100円で公開しました。今回はNavMeshAgentを使ってランダムにうろうろ移動するモブキャラ的なものを作ってみました。■オブジェクトを設置するモブキャラにはユニティちゃんを使います。unitychanそしてPlaneと空のオブジェクトを出してください。Empty空のオブジェクトはランダムで移動する際の中心の位置をとるために出します。名前はCentralPointにしました。位置はどれも中央にしておくのが無難でしょう。■NavMeshAgentの設定PlaneにNavMeshAgentの設定をします。Staticをクリックしてください。メインメニューのWindowからNavigationウィンドウを出します。Staticを選んだオブジェクトにNavMeshAgentが移動できる青い範囲が設定されます。ちなみにPlaneを動かしてもその範囲は一緒に動かないのでBakeし直す必要があります。あとは動かしたいオブジェクトにNavMeshAgentコンポーネントを設置するのですが、今回はスクリプトで追加します。■AnimatorControllerの設定ユニティちゃんのAnimatorControllerを設定します。使うのはWAIT00とWALK00_Fの2種類です。Treeとあるオレンジの長方形のもの(State)をクリックすると画面が変わります。Layerと書かれた部分をクリックしてください。Treeと書かれた部分をクリックし、Inspectorを設定します。Typeは1D、ParameterはBlendに最初からなってると思います。Motionの右下の+ボタンを2回クリックし、アニメーションクリップを設定します。Projectビューからドラッグ&ドロップしても良し、入力欄の右にある丸をクリックして選択しても良しです。ThresholdはWAIT00が0でWALK00_Fが1です。Thresholdsのチェックを外すと編集できます。するとこういう画面になります。最後はHierarchyに出しているユニティちゃんのInspectorにセットします。AnimatorコンポーネントのControllerの欄にドラッグ&ドロップするか、右端の丸をクリックして選択してください。あとApplyRootMotionはチェックを入れているとアニメーションで位置を変えますが、今回は外してください。スポンサーリンク■スクリプトを書くあとはスクリプトを書いてセットするだけです。CentralPointの位置を中心にランダムで決められた範囲の中に目標地点を作り移動します。waitTimeを変えることで待ち時間を変えられます。ユニティちゃんにアタッチしたらInspectorにCentralPointを入れて出来上がりです。このようになりました。NavMeshAgentを使いランダムにうろうろさせました。2019■修正したスクリプト先ほどのスクリプトだと移動しながら向きを変えているのが不自然です。向きを変えてから移動するようにスクリプトを修正しました。InspectorからCentralPointをセットしてください。向きを変えてから移動するようにしました。2019さらにマップを広く、ユニティちゃんをたくさん出してみましょう。ユニティちゃんを大勢うろうろさせました。2019うーん、壮観ですね。今回はこれで完成です。最近の3DゲームのRPGでこんなランダムにうろうろするキャラクターはいるのでしょうか?2Dだと多かったのですが最近は決まった地点に目的があって動いているように見せるのがトレンドかもしれません。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。