因爲我們的兩個遊戲運行起來以後,角色都時一個預製體生成的,所以一會我們就得靠移動他們才能知道哪個時自己了。如果在遊戲開發得時候,我們需要識別自己控制得角色怎麼辦呢?讓我們簡單地加個顏色來區分吧!
首先,打開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,
改變位置 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 開始聯網。按空格發射子彈,你會發現,只能在本地發射,因爲子彈還沒有進行同步。