UNET連線遊戲(八){鬼抓人}

本篇使用的是5.3版後有UNET的UNITY
目標:基本連線遊戲機制+線上怪物

1.延續前篇(UNET連線遊戲(七){原來這就是掛掉的感覺})

除了連線玩家,以及場景的布置外,還可以在場中加入一些由伺服器控制的NPC怪物增添遊戲的樂趣。首先處理場景的布置~
unet-hit-116為了節省效能,我們開啟Window→Lighting關閉Auto Bake並烘焙貼圖後關閉即時的GI渲染,讓遊戲運行的快些節省網路效能。
unet-hit-117

2.選取全部的地板Window→Navigation按下Bake創建一個導航平面給怪物NPC使用。
unet-hit-118

3.創建一個空物件當作怪物的重生點,並掛上MonsterSpawner.cs

內容如下
InvokeRepeating (“CmdScanMonster",3f ,10f); 開始3秒後掃描場上是否存在怪物,之後每10秒檢查一次。若無就執行創造怪物的方法。
unet-hit-119

4.怪物的造型就要發威各位的創意了,該卦的程式還是要掛上。
unet-hit-120 unet-hit-121由於這些程式要改成也能怪物使用,稍做改寫。

以上都是為了是否為怪物增加的條件判斷。

5.怪物身上重點功能導航目標,首先新增Component零件NavMeshAgent,以及球形Trigger把半徑加大為5。unet-hit-122
unet-hit-123

6.接下來撰寫SearchPlayer.cs搜索玩家的功能

首先判定是否為SERVER端取得導航控件,然後將導航目標設為踩進球型偵測區的PLAYER,還有是否進入到攻擊範圍的CloseYou方法,執行傷害玩家以及導航關閉的功能。將怪製成預制物件後從場景刪除,指定給生怪程式還有NetworkManager的線上成員註冊。

7.另個可以擴增的功能則是攻擊打他的玩家,因此思考下這個程式邏輯便會得到,子彈需要帶有玩家資訊的結論;玩家帶著槍槍發射子彈,所以我們要改寫GunController.cs以及AmmoController.cs的內容,首先子彈的部分:需要一個可以帶玩家資訊的欄位

這裡我們用fromWho來裝載這個資訊,並寫在打到怪物標籤物體時遞給怪物的目標物。

接著槍的部分:則是發射時將發射玩家的資訊貼到子彈的fromWho欄位中。

驗收!!

unet-hit-124

Leave a Reply