Unity學習之自動尋徑

unity學習,希望我的博客能給喜歡unity的朋友帶來幫助


自動尋徑指的就是點擊場景上的一個位置,角色就會自動尋路過去。中間可能會有很多的障礙物,角色會自動繞過障礙物,最終達到終點。

 

Navigation:定位,導航

 

首先先來實現巨魔自動尋徑的功能,先在視圖中創建地形和障礙物(障礙物可以用cube來代替),然後倒入巨魔。然後點擊window---Navigation,這樣在屬性欄的旁邊就會出現Navigation欄。然後設置各個物體的屬性:


地面和障礙物:



然後烘培尋路網格:



巨魔:


      


最後給巨魔添加腳本,代碼如下:


  1.         NavMeshAgent agent;
  2.         void Start() {
  3.               agent = GetComponent<NavMeshAgent>();
  4.                       }

  5.         void Update() {
  6.                 RaycastHit hit;
  7.                 if (Input.GetMouseButtonDown(0)) {
  8.                         Ray ray =Camera.main.ScreenPointToRay(Input.mousePosition);
  9.                         if (Physics.Raycast(ray, out hit)){
  10.                                 agent.SetDestination(hit.point);
  11.                                          }
  12.                                 }
  13.                       }

還可以實現巨魔的走和跑,在代碼中添加:


  1. Animator anim;
  2. void Start() {
  3.               anim = GetComponent<Animator>();
  4.         }
  5. void Update() {
  6.                if (agent.remainingDistance == 0)  
  7.                 {  
  8.                         AnimationToIdle();  
  9.                 }  
  10.                 else  
  11.                 {  
  12.                         AnimationToWalk();  
  13.                 }  
  14.            }
  15. public void AnimationToIdle(){
  16.                 anim.SetFloat("idle", 1F);
  17.                 anim.SetFloat("walk", 0.0F);
  18.                 anim.SetFloat("run", 0F);
  19.         }
  20. public void AnimationToWalk(){
  21.                 anim.SetFloat("run", 0.0F);
  22.                 anim.SetFloat("idle", 0F);
  23.                 anim.SetFloat("walk", 1.0F);
  24.         }
  25. }

最後把腳本拖放到巨魔上。


寵物跟隨


在遊戲中,主角的身邊總是跟着自己的魔寵,我們也來實驗一下,下面我用球來代替魔寵。


代碼如下:


  1. public Transform target;
  2.         private NavMeshAgent agent;
  3.         void Start () {
  4.                 agent = GetComponent<NavMeshAgent>();
  5.         }
  6.         void Update () {
  7.                 if (target!= null) {
  8.                         agent.destination=target.position;
  9.                 }
  10.         }

把腳本拖放到魔寵上,並且給魔寵添加NavMeshAgent



設置障礙物

 

如圖,在添加一個cube充當障礙物



設置cube的屬性:


        

 

這樣在巨魔到達障礙物時就走不過去。


高空下落


遊戲中經常有從山上或者是牆上跳下的人物,我也來實驗一下這功能。


選中要跳落的地點,點擊障礙物,在右側欄中進行設置:


   


設置完成後出現如下場景:



尋路網格層


Navigation裏面BakeDrop Height的值設爲0取消勾選Navigation裏面ObjectOffMeshLink Generatic點擊Bake;


Navigation裏面Layers創建兩個Layers(LayersUpLayersDown)-->Bake



設置巨魔屬性:



一定要注意,創建了兩個Layers,選中兩條路徑,所選的路徑的Navigation裏面的Navigation Layer也要改變:



這樣才能實現巨魔有選擇性的尋路。


NavMeshAgent屬性解釋:



更多精彩請點擊 http://www.gopedu.com/article


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章