参考元
http://www.unitygames.jp/game/ug2774551
参考元ではC#で実装していますが、JSで実装してみました。
手順は以下の通りです。
ステージを作成します。
ステージで使用するゲームオブジェクトには「static」が適用されている必要があります↓

ただ、これだとすべてのstatic要素が適用されてしまうので、
それが嫌だという場合は「Navigation Static」のみを適用することもできます↓

ステージが出来たところで、Navigationウィンドウを表示します↓

Navigationウィンドウの中でパラメーターを変更して[Bake]ボタンを押すと、
画面右のように、経路が水色で表示されます↓

ステージの設定は以上です。
次に、スタート地点(空オブジェクト)と、ゴール地点(シリンダ)を用意します↓

スタート地点からゴールまで移動するモブ(「その他大勢」という意味)を用意します。
このモブは、
・親 = 空オブジェクト ← Nav Mesh Agent コンポーネント、スクリプトを適用
・子 = キューブ
としています。
キューブにNavMeshAgentを適用すると、ステージに埋もれてしまったので
このような親子関係になっています。
スクリプトの入力パラメーター(start, goal)に、プロジェクトウィンドウからスタートとゴール
オブジェクトをドラッグして適用してます。

Nav Mesh Agent コンポーネントを適用するときのメニュー画面↓

モブに適用したスクリプト(Mob_Controller.js)は、以下の通りです。
---------------------------------------------
// 【参考】 http://www.unitygames.jp/game/ug2774551
// ↓ 参考元はC# これを JS 向けに修正
// このスクリプトはNavMeshAgentが適用されたモブ(「その他大勢」という意味)に適用される
// ゴール地点
var start : Transform;
var goal : Transform;
// NavMeshAgentコンポーネントを参照するための変数
private var navMeshAgent : NavMeshAgent;
function Start () {
// NavMeshAgentコンポーネントを取得
navMeshAgent = GetComponent(NavMeshAgent);
// 目的地を設定
navMeshAgent.SetDestination(goal.position);
}
function Update() {
// 目的地までの距離
if (navMeshAgent.remainingDistance < 0.5f) {
// スタート位置に戻る
transform.position = start.position;
}
}
---------------------------------------------
実際に動いている様子は こちら で確認できます。
経路探索がこんなに簡単に実装できるなんて、素敵すぎるなー。