如何用Unity製作「怪物追蹤玩家」功能

文、查理

玩遊戲的時候常常不小心會跟敵人遭遇,對到眼的一瞬間,怪物就窮追不捨的跟著玩家。

這樣的功能要如何製作呢?
會不會非常的困難?
需要寫非常多的程式嗎?

如果使用Unity製作,只要幾行程式碼,就可以完成了,也不需要做太多的設定,這都是因為Unity提供了非常強大的循路追蹤功能,首先我們可以做一個簡單的場景來做測試。

第一個部分:建立一個簡單的測試場景

1. 建立一個簡單的平面物件,當作地板
Game Object >> 3D Object >> Plane

2. 建立一個方塊作為玩家與怪物之間的障礙物
Game Object >> 3D Object >> Cube

3. 建立一個膠囊物件,作為玩家
Game Object >> 3D Object >> Capsule

4. 建立一個球體,當作怪物
Game Object >> 3D Object >> Sphere

5. 新增三個材質球,分別設定為:
紅色,指定給怪物物件
藍色,指定給玩家物件
灰色,指定給地板及障礙物
然後分別把這些物件,排列在適當的位置,這時候我們可以新增一個玩家控制的程式碼,如下:

void FixedUpdate () {

 float h = Input.GetAxisRaw  (“Horizontal”);
 float v = Input.GetAxisRaw  (“Vertical”);

 movement = new Vector3 (h , 0, v );
 movement = movement.normalized * Time.deltaTime * speed;

 playerRigidbody.MovePosition (transform.position + movement);
}

完成之後,再將程式碼拖曳到玩家物件上,播放測試看看,按下鍵盤的方向鍵,即可開始移動我們的玩家物件。

怪物追蹤玩家的功能,主要需要設定三個部分:

第一部分,就是我們的地形設定

開啟共用功能static,同時選取地板及障礙物,在Inspector屬性欄的右上方,勾選static,再開啟選單Windows >> Navigation,開啟追蹤功能視窗,在Bake的標籤上點一下,再點擊右下方的Bake,即可快速完成烘焙地形可追蹤範圍。

第二個部分,點選怪物物件

開啟選單Component >> AI >> Nav MeshAgent,新增一個怪物追蹤的程式碼,程式碼輸入如下:
using UnityEngine.AI;

public GameObject player;

void Start () {

 player = GameObject.Find (“Player”);
}

void FixedUpdate () {

 GetComponent<NavMeshAgent> ().SetDestination (player.transform.position);

}

再把這個程式碼,拖曳給怪物物件,按下播放鍵之後,就可以控制玩家移動,怪物會一直朝著玩家的位置移動。

加入菜鳥救星官方Line並回覆「我想看文章」,不定期獲得更多知識吧!

不同頻道,不同知識!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料