如何用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);
}
再把這個程式碼,拖曳給怪物物件,按下播放鍵之後,就可以控制玩家移動,怪物會一直朝著玩家的位置移動。
🔸 學完簡單的追蹤功能,來看看如何用跨平台遊戲開發製作遊戲引擎:Unity跨平台引擎應用
FB粉絲團:https://www.facebook.com/lccnetzone
YouTube頻道:https://www.youtube.com/user/LccnetTaiwan
痞客邦Blog:http://lccnetvip.pixnet.net/blog