天天看點

【學習筆記】Unity3d中的自動尋路入門

  unity3d中提供給我們一個内置元件Navigation,此元件幫我們完成強大的自動尋路的功能。由于内容比較多,我們需要慢慢深入去了解。今天就實作一個簡單的滑鼠點選地面,物體到達點選點的尋路執行個體。

  首先,建立一個Plane作為地面,然後選中Plane點選Window->Navifation,此時Navigation面闆會顯示出來。

【學習筆記】Unity3d中的自動尋路入門

  選中Navigation Static後,點選右下角的Bake按鈕對Panle進行烘焙,稍等片刻會發現Scene視圖中的Plane變為藍色

【學習筆記】Unity3d中的自動尋路入門

   此區域就是自動尋路的區域。

  接下來,建立我們的主角Cube,對其進行同Plane一樣的烘焙操作,然後點選Componet->Navigation->Nav Mesh Agent為角色添加NavMeshAgent元件,下面還是需要為主角添加腳本進行控制。

    腳本如下:

public class PlayerController : MonoBehaviour
{
private NavMeshAgent agent;
void Start()
{
//擷取元件
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
//滑鼠左鍵點選
if (Input.GetMouseButtonDown(0))
{
//錄影機到點選位置的的射線
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//判斷點選的是否地形
if (!hit.collider.name.Equals("Plane"))
{
return;
}
//點選位置坐标
Vector3 point = hit.point;
//轉向
transform.LookAt(new Vector3(point.x, transform.position.y, point.z));
//設定尋路的目标點
agent.SetDestination(point);
}
}
}
}
           

  完成以後,我們點選Plane平面位置,Cube就會自動的移動到此點。

【學習筆記】Unity3d中的自動尋路入門

     今天就寫到這裡吧,我要潛水了。。。。。。。。。。

繼續閱讀