【Unity】ナビメッシュエージェントをランダムな方向に移動させる
ナビメッシュエージェントを360度ランダムな方向に移動させてみます。 ゲームオブジェクトを追加 シーンにカプセルと、地面や障害物を配置してナビメッシュをベイクしました。 カプセルにナビメッシュエージェントコンポーネントと… 続きを読む »
ナビメッシュエージェントを360度ランダムな方向に移動させてみます。 ゲームオブジェクトを追加 シーンにカプセルと、地面や障害物を配置してナビメッシュをベイクしました。 カプセルにナビメッシュエージェントコンポーネントと… 続きを読む »
「Nav Mesh Surface」コンポーネントを使って、エージェントタイプごとに別のナビメッシュをベイクしてみました。 コンポーネントを入手する 「Nav Mesh Surface」コンポーネントはGitHubでダウ… 続きを読む »
オフメッシュリンク上でのアニメーションや速度を変えるの歩行アニメーションをブレンドツリーで揃えてみました。 ブレンドツリーを作る まず、アニメーターコントローラーで新しいブレンドツリーの設定されたステートを作りました。 … 続きを読む »
オフメッシュリンクで狭い通路を通るときに、屈んで歩くアニメーションに変えて歩く速さも遅くしてみました。 オフメッシュリンクを作る まず、壁と通路を作ってナビメッシュをベイクしました。通路の天井が低いのでこの中にはナビメッ… 続きを読む »
違うフロアにいるとき等にナビメッシュエージェントの目的地にプレイヤーの位置を毎フレーム設定すると、エージェントの移動がカクついてスムーズにプレイヤーを追尾しません。 毎フレーム目的地を入れて、経路が変わることが原因でしょ… 続きを読む »
建物の床などナビメッシュが上下に重なってしまうところでは、プレイヤーがいる階のナビメッシュ上の点がただしく取れないときがあるので、階を判別して目的地を探す方法を変えてみました。 まず、階ごとに別々のエリアを設定します。 … 続きを読む »
1階のナビメッシュの無い点から最も近い1階のナビメッシュ上の点を取得してみました。 まず上のように1階と2階と階段を作ってナビメッシュをベイクしました。1階のナビメッシュには穴が開いています。 青いプレイヤーにはタグを付… 続きを読む »
敵が一体しか出現しないことにして作っている途中で複数の敵を作れるように変更し、管理クラスを作ってみました。 シーンには床に敵の目的地と中央のCubeがあります。目的地のルートのオブジェクトとCubeは敵のスクリプトにアタ… 続きを読む »
敵がプレイヤーを見ているときにゲージを上げて、満タンになったらプレイヤーを追尾し始めます。距離によってゲージの上がり具合を変えます。 また、プレイヤーが走っていてもゲージが上がります。 【Unity】敵がプレイヤーに気づ… 続きを読む »
NPCに追加したスクリプトを、NPCのアニメーターコントローラーのStateMachineBehaviourのフィールドに入れて、NPCを非アクティブにすると、インスペクタの変数の欄にNoneと表示されてしまいます。 S… 続きを読む »
敵が走っているプレイヤーに気づいて追尾するでは、プレイヤーが走ると注意レベルのゲージが上がって、満タンになると敵がプレイヤーを追尾しはじめます。 走るのをやめるとゲージが下がって0になると追尾をやめますが、敵にプレイヤー… 続きを読む »
走っているプレイヤーに気づいて、敵が追ってくるようにしてみました。 プレイヤーが走っているとゲージが上がっていって、満タンになると敵がプレイヤーを追尾し初めます。プレイヤーが走っていないときはゲージが下がっていって、ゲー… 続きを読む »
エージェント同士がすれ違うとき、デフォルトでは互いにぶつからないように回避します。 RadiusとHeightはナビメッシュの大きさには関係ないようですが、障害物とぶつかる範囲が変わります。 Radiusが大きいと道が細… 続きを読む »
ナビメッシュエージェントで敵を巡回させながら、基本的な設定を調整してみます。まずシーンにPlaneオブジェクトを置いて、インスペクタでNavigation Staticにチェックをいれます。 Navigationウィンド… 続きを読む »
NPCの通り道であるナビメッシュは、テレインが凸凹してたりすると途切れてしまいます。こういうところはSmooth Heightでスムーズにして再度ベイクすると通ります。 段差のある部分もナビメッシュが途切れるので、なんと… 続きを読む »
前の記事では、保存した経路を再設定したときに正常に経路にたどり着けるときと、その場に立ち止まってしまうときがありました。このときの経路のNavMeshPathStatusの値を調べてみました。 text.text = a… 続きを読む »
ナビメッシュエージェントから目的地までの経路に沿った距離を表示してみます。 ナビメッシュの経路のコーナーポイントは、通過するたびに一つずつ減っていくようです。今ある2番目のコーナーポイントを通過すると、1番目のコーナーポ… 続きを読む »
ナビメッシュの経路を保存しておいて、別の目的地を設定した後に再設定してみます。 経路は目的地を設定してから数フレーム後に利用可能になるようです。まだ一度も目的地を設定していないときは、今いる場所が目的地になっていて、経路… 続きを読む »
前の記事でナビメッシュエージェントをワープさせるときに、ナビメッシュエージェントが消えて少し時間を開けてから出現するようにしてみます。 // Update() // 数秒ごとに second = 0f; if (num … 続きを読む »
ナビメッシュエージェントが目的地に向かう時に小刻みにワープさせてみました。 まず、目的地を設定した後に、前の記事の方法で経路上の位置を等間隔に取得します。オレンジ色の球を置いたときにVector3のリストに球の位置を追加… 続きを読む »