[Unity]視線でキャラクターを動かす

icatch_raymove02 Ray

相変わらずVRで何を作るべきか思いつかず悩んでいたのですが、そういえばUnityのVRチュートリアルで「視線でキャラクターを動かす」プログラムがあったことを思い出したので、なんとなく実際に再現してみることにしました。

ステージの設定

※ステージの作成では、Probuilderというアセットを初めて使ってみたのですが、非常に便利でした。

今回はキャラクターを動かす方法として「邪魔なオブジェクトを避けながら目的地に向かって進行させる」ことができるNavMeshAgentというコンポーネントを使用します。そのため予めNavMeshAgentの付いたオブジェクトが動ける範囲であるNavMeshを設定していきます。

まずWindowからNavigationを開きBake項目を選択します。nav以上のような画面が表示されるので、そのまま一番下のBakeボタンをクリックします(何度でもBakeできるので細かいパラメータは後からでも設定可能でした)。

Sceneビュー上で線によって囲まれた部分がキャラクターが動ける範囲にあたります。nav_sceneview

キャラクターとカメラの設定

動かしたいキャラクターにNavMeshAgentコンポーネントを追加します。またスピードなどはインスペクタ側で自由に設定できるので適当に設定しときます。

後は「視線の方向をNavMeshAgentの目的地にする」処理を作っていきます。前回と同じように視線を飛ばす位置をカメラの正面にするため、Rayを飛ばすスクリプトをCenterEyeAnchorにコンポーネントとして加えました。select_ray_pos

キャラクターに加えられたスクリプト内のメソッドを呼び出したいだけなので、本当に前回のものとほとんど同じでした。

キャラクター側にコンポーネントとして加えるスクリプトは以下のようになりました。

NavMeshAgentクラスのSetDistinationメソッドは引数として指定された座標に向かってオブジェクトを移動させます。そのため、RaycastHit.pointつまり視線の衝突点をメソッドに渡しています。今回は私にとっても比較的簡単だったので大体30分くらいで完成しました。

ray_move

コメント

タイトルとURLをコピーしました