※Nav Mesh は Pro専用の機能です
ステージ内で通常移動では越えられない段差があるとき、Off Mesh Link を用意することで
段差を上ることができます。
Unity3.5 public betaのサンプル の「NavMesh Demo」にもありますが、
必要最低限だけを用意してみました。
まずは、ステージに追加の床とハシゴ(ladder)に見立てたオブジェクトを用意します(中央赤枠)。
ハシゴの子オブジェクトとして、着地点/頂上点には空のオブジェクト(bottom,top)を用意します(左下赤枠)。
前回作っておいたモブはプレファブ化しておきます(左上赤枠、右上赤枠)。

ハシゴの子オブジェクト bottom の空オブジェクト位置はこんな感じ↓

ハシゴの子オブジェクト top の空オブジェクト位置はこんな感じ↓

※モブに適用しているプログラムには一部修正を加えています↓
------------------------------------------
// 【参考】 http://www.unitygames.jp/game/ug2774551
// ↓ 参考元はC# これを JS 向けに修正
// このスクリプトはNavMeshAgentが適用されたモブ(「その他大勢」という意味)に適用される
// スタート/ゴール地点
var start : Transform;
var goal : Transform;
// プレファブ用
var mobPrefab : GameObject;
// NavMeshAgentコンポーネントを参照するための変数
private var navMeshAgent : NavMeshAgent;
function Start () {
// NavMeshAgentコンポーネントを取得
navMeshAgent = GetComponent(NavMeshAgent);
// 目的地を設定
navMeshAgent.SetDestination(goal.position);
}
function Update() {
// 目的地までの距離
if (navMeshAgent.remainingDistance < 0.5f) {
// スタート位置に戻る ※この方法だと、2周目に最短距離を選択してくれない!
// transform.position = start.position;
// スタート位置にインスタンスを生成
Instantiate(mobPrefab, start.position, Quaternion.identity);
// 自分自身を削除
Destroy(gameObject);
}
}
------------------------------------------次に、ハシゴ(ladder)オブジェクトにOff Mesh Linkコンポーネントを適用します↓
Off Mesh Link コンポーネントの「Start」「End」パラメータに、
ハシゴ(ladder)の子オブジェクトで作っておいた start/end オブジェクトを適用します↓
※下から上に上るということで、start = bottom、end = top としています
その後、前回のベイクをクリアしてから再度ベイクすると、ハシゴ(ladder)の位置に経路ができている
ことがわかります↓
ハシゴ(ladder)を通る経路が最短経路となるため、2周目からはモブは必ずハシゴ(ladder)を通るようになります。
実際の動作は、こちら で確認することができます。タグ:UNITY OffMeshLink