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 開始聯網。按空格發射子彈,你會發現,只能在本地發射,因爲子彈還沒有進行同步。