角色移動差異化
在上一章節,移動角色不是很完全,會造成全部的角色都移動到。現在要講解怎麼解決它。
- 首先打開 Player Controller 腳本。
- 引用 UnityEngine.Networking 命名空間。
- 把原本的基底類別 Mono Behaviour 改為 Network Behaviour 。
在Update 方法(或是類似的 Late Update等不斷更新的方法)內新增判斷式:
if (!isLocalPlayer) { return; }
- Networking 命名空間包含有關多人連線的類別和相關型別。
- Networking Behaviour 繼承至 Mono Behaviour 。被掛載的遊戲物件需要使用到多人連線的屬性或成員時,就需要使用。
- IsLocalPlayer 為Networking Behaviour 內的成員。
現在再測試伺服器,發現只有伺服器的角色會移動。但在客戶端控制移動,伺服器端的畫面中客戶端角色卻不會移動!
上述的問題需要在角色Prefab上,掛載 Network Transform 。
- 此Component是用來同步角色的Transform。
- 調整 Network Send Rate (Second) 回傳位置給伺服器同步的頻率。
- 注意,適當的拿捏頻率是重要的地方。同步頻率太快會影響到遊戲效能,太慢會影響到遊戲體驗。
- 可藉由內插和外插來彌補同步移動時不順的問題。
- 這時再測試,會解決畫面移動同步的問題。