子彈發射同步
在此章節會解釋如何在多人連線下發射子彈,並對腳本和Prefab做修改。
- 在子彈Prefab掛載Network Transform 。
- 設定 Network Send Rate (Second) 為零。
- 因為子彈在發射後不會改變速度和方向,所以不需要送出同步更新。每個客戶端皆依賴子彈目標的位置。
- 可以減輕遊戲的效能負擔。
- 設定 Network Send Rate (Second) 為零。
- 在Network Manager中:
- 在 Spawn Info 中的 Registered Spawnable Preafbs 把子彈Prefab加進去。
- 修改 Player Controller 腳本。
- 把Fire方法改名為 CmdFire ,並加上屬性 Command 。
- Command屬性標示此方法,從客戶端送出並由Server端發送給其他客戶端。
- 只能從本地玩家中送出。
- 使用屬性時,方法名稱必須都帶有Cmd前綴字。
- 在CmdFire中新增述句:
NetworkServer.Spawn(bullet);
- 此述句功能類似Game Object的 Instantiate ,要求伺服器端和所有有連線的客戶端產生子彈物件。
- 被產生的物件是被產生系統管理,不管修改或刪除都會全部同步。
- 測試結果:角色發射子彈時每個客戶端都會有同步,但是擊中後沒有任何效果。