1. 程式人生 > >unity官方內建網路unet的例項教程(四)

unity官方內建網路unet的例項教程(四)

因為我們的兩個遊戲執行起來以後,角色都時一個預製體生成的,所以一會我們就得靠移動他們才能知道哪個時自己了。如果在遊戲開發得時候,我們需要識別自己控制得角色怎麼辦呢?讓我們簡單地加個顏色來區分吧!

首先,開啟PlayerController指令碼,新增 OnStartLocalPlayer方法(OnStartLocalPlayer方法是進行基於虛方法而重寫的方法,只能用於本地玩家,比如配置攝像頭和輸入。)。具體如下:


新增程式碼

儲存,然後重新編譯運行遊戲選擇 LAN Host,再把unity也執行起來選擇LAN Client進入遊戲。可以發現我們控制的遊戲的那個角色變成了藍色,但是別的時白色。


這樣子的

ok,退出遊戲,別忘了儲存下。

接下來,我們讓角色發射子彈,還是老樣子,先實現單機功能再進行網路化改造。

先做子彈,在Hierarchy面板右鍵,新建Sphere球體,重新命名為Bullet,選中它,調整scale 縮放至(0.2, 0.2, 0.2),然後,新增剛體元件,取消重力,拖到Prefabs資料夾裡面生成子彈預製體,刪掉Hierarchy的Bullet。


屬性欄

儲存遊戲。開啟 PlayerController指令碼


指令碼

儲存指令碼,回到Unity,在prefabs資料夾中選中Player預製,把Player預製拖拽到Hierarchy裡面,選中它,新建Cylinder

圓柱體,重新命名為:Gun,選中Gun,在屬性面板刪除掉 碰撞體元件Capsule Collider,


Gun

改變位置 Position至:(0.5, 0.0, 0.5),改變旋轉Rotation(90.0, 0.0, 0.0),改變縮放Scale至(0.25, 0.5, 0.25),將其材質設定為:Black,最後是這樣子的:


遊戲物體

選中Player,右鍵新建空物體empty GameObject,重新命名為:Bullet Spawn,設定Position位置為(0.5, 0.0, 1.0),就是槍口的位置。最後,也是最重要的一步選中Player:點選右邊屬性面板中上面的apply按鈕


接受

拖拽子彈預製和Bullet Spawn的空物體分別新增到Player屬性面板中指令碼定義的兩個空地方 Bullet Prefab、BulletSpawn


刪除Hierarchy層次檢視中的Player,儲存遊戲。再次重新生成遊戲,執行選擇LAN Host 進入遊戲,回到Unity運行遊戲,選擇LAN Client 開始聯網。按空格發射子彈,你會發現,只能在本地發射,因為子彈還沒有進行同步。