2016年7月17日 星期日

【Unity官方教學分享】NavMesh Agent元件

網頁連結

如何開啟CC字幕?

在Unity中,想在NavMesh上使用導航功能的物件,需要在移動物件上新增Nav Mesh Agent元件
NavMesh Agent元件

以下是Nav Mesh Agent元件上的參數。
NavMesh Agent元件
Agent Size
Radius:Agent元件半徑。
Height:Agent元件高度。
Base Offset:Agent元件垂直中心位置。

Steering
Speed:導航時的移動速度。
Angular Speed:導航時的旋轉速度。
Acceleration:導航時的最大加速度(數值/秒^2)。
Stopping Distance:與目標物在多少距離內,會停止導航。
Auto Braking:是否要自動煞車,避免導航時超過目標。

Obstacle Avoidance
Quality:障礙物迴避的精確度,
數值設定越高,障礙物迴避就會越精確,但執行效能就會變差,設定越低則反之。
Priority:迴避優先度,數值越低代表優先度越高,
優先度高的物件在移動時,不會被優先度低的物件阻擋。

Path Finding
Auto Traverse off Mesh Link:是否要讓物件做分離網格的移動。
Auto Repath:如果原本的路徑失效,是否要重新規畫路徑。
Area Mask:選擇那些區域可通行,若取消選取,該區域則不會在路徑規劃範圍內。

完成Agent元件數值的設定後,就可以指定移動物件的目標,讓它開始被導航。
首先需要在移動物件上新增腳本。
NavMesh Agent元件
腳本內容如下:
using UnityEngine;
public class SampleTarget : MonoBehaviour {
    public Transform target;
    private NavMeshAgent agent;
    void Start () {
        agent = GetComponent<NavMeshAgent>();
    }
    void Update () {
        agent.SetDestination(target.position);
    }
}
抓取物件下NavMeshAgent元件,透過持續執行SetDestination追蹤目標物。

這裡讓目標物(target)為範例中的泰迪熊,下圖是執行結果:
NavMesh Agent元件
被詭異物體追趕的熊‧

以上就是導航系統裡的NavMesh Agent元件,上次生成了NavMesh,加上這次的Agent元件,已經可以看到Unity導航系統的結果。
這次就到這裡。

1 則留言:

  1. hi Jerrard 先進您好
    我在設定導航時發生以下錯誤
    "SetDestination" can only be called on an active agent that has been placed on a NavMesh.
    不知道這要怎麼處理~ 謝謝。

    回覆刪除

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...