UnityC# LOL的移動方式Ray和NavMeshAgent

 

將Ray(射線)結合NavMeshAgent製作出LOL英雄聯盟的移動方式

 

前言:

本篇將利用Unity的RayNavMeshAgent功能製作出LOL英雄聯盟中玩家移動的方式。角色將會朝著你所點擊於場地上的位置移動,並且避開中途的所有障礙物。

 

備註:

本篇為「簡易AI目標式移動」的延伸練習,須先了解前篇所介紹公能,還不清楚的朋友可點選下方傳送門

「簡易AI目標式移動」傳送門:https://goo.gl/RDuJfv

 

  • 此篇重點語法 * * * * *

→ ScreenPointToRay (Vector3座標);

說明:ScreenPointToRay為Ray(射線)的方法之一,射線的行程方式為,已銀幕位置(Camera位置)為出發點,朝著遊戲中某一座標為方向延伸所形成的射線,框框內所填的便是目標座標。本篇的目標座標將是已滑鼠所點擊得的位置為射線的方向,以此決定玩家點擊的座標位置。

 

e.g. Ray ray = cam.ScreenPointToRay(Input.MousePosition);

 

→ RaycastHit

說明:RaycastHit用於偵測射線的碰撞事件,並將相關的碰撞資訊儲存起來。

 

e.g. RaycastHit hit;

 

  • 此篇效果 - 朝目標移動並避開障礙物 * * * * 

 

-  大概了解重點後,接下來進入完整教學   -

 

一、利用NavMeshAgent和Navigation將場地以及「要移動的物件(紅方塊)」建製出來。

1.png

備註:由於NavMeshAgent和Navigation以於文章「簡易AI目標式移動」中介紹過,亦本篇不加以介紹。

 

二、若你是從前一篇作過來的,請先將「黃方塊」以及「紅方塊的程式刪除掉,若不是則請直接略過此步驟即可。

2.png

 

三、請再「要移動的物件(紅方塊)」上新增一個程式,程式的與法如下:

3.png

程式語言:

 

using UnityEngine.AI; //使用UnityEngine.AI

public NavMeshAgent agent;        //宣告NavMeshAgent
public Camera cam;        //宣告Camera物件

 

void Start () {

    agent = GetComponent<NavMeshAgent> ();        //接收NavMeshAgent

}

 

void Update () {

    if (Input.GetMouseButton (0)) {    //判斷是否按下滑鼠左鍵


    
 //宣告一條從Camera到滑鼠點擊位置的Ray(射線)

Ray ray = cam.ScreenPointToRay (Input.mousePosition);

 

RaycastHit hit;    //宣告射線碰撞

 

         if (Physics.Raycast (ray, out hit)) {    //判斷射線是否有碰撞到東西

 

//讓物件朝著射線碰撞到的點進行AI移動

agent.SetDestination (hit.point);        


        }
    }
}

 

四、將場景中的Camera物件拖曳至cam欄位中。

4.png

 

五、現在「要移動物件(紅方塊)」已經可以移動到你所點擊的位置了,可以撥放看看是否有成功。

5.png

 

六、雖然方塊可以照著你點擊的位置移動,但當你點擊快一點時,你會發現方塊會有些跟不上的感覺,這時你可以對「要移動物件(紅方塊)」的NavMeshAgent進行一些數值上的調整,已下是我設定的數值供大家參考:
6.png

參數解析:

 

  • Speed:Agent移動速度。
  • Angular Speed:Agent旋轉速度。
  • Acceleration:路徑的最大加速度。

 

七、設定完後就會像是LOL的移動方式就玩成囉!可以撥放看看是否成功。若沒有成功可以往上檢查是否有哪裡遺漏了。

 

備註:本篇所使用的Unity版本為5.6.4

 

 

-------------------------------------------------------------------------------------------------------------------------------------

 

我們有粉絲專頁囉!!!       

如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!

https://www.facebook.com/Straying2018/

 

●     如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !  

●     對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!  

●     有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家!

 

- By Tim -

arrow
arrow

    tim318407 發表在 痞客邦 留言(0) 人氣()