2 - Scene and Player
概述
Fusion 102共享說明了如何設定一個簡單的場景以及如何建立一個玩家預製件。在這個章節的結尾,您將有一個工作中的已連網場景,其針對各個已連線客戶端來生成一個玩家物件。
設定場景
從一個空的Unity場景啟動。以右鍵按一下Unity中的階層分頁並且選擇Fusion > Setup > Networking
。
這將新增一個Prototype Runner
及一個Prototype Network Start
到場景。
Prototype Runner
含有Network Runner
,其是運行Fusion模擬的核心元件。Network Events
便條讓您可以快速地鏈接您自己的功能到各種網路事件,比如玩家加入或離開遊戲階段。Prototype Network Start
是一個原型元件,其含有一個啟動程序GUI來快速地加入一個Fusion房間之中。
下一步,新增一個地面到場景,以右鍵按一下Unity中的階層分頁並且選擇3D Object > Plane
。重新命名遊戲物件為Floor
並且重新設定它的位置為(0, 0, 0)
。
有了這些,就完成了場景設定。
建立玩家預製件
下一步是建立玩家物件。以右鍵按一下階層並且選擇CreateEmpty
。重新命名遊戲物件為PlayerCharacter
。
新增一個NetworkObject
元件到它。這個元件給了物件一個網路識別,這樣所有同儕節點可以參照它。
勾選元件上的Destroy When State Authority Leaves
。這個設定讓Fusion在控制物件的客戶端( StateAuthority
)離開時取消生成物件。針對許多遊戲,這不是意圖的行為,因為玩家物件可以保留在周圍,並且在玩家重新連線之後重新指派給玩家,但是在這個範例中將使用它。
取消勾選Allow State Authority Override
。這個設定允許其他客戶端來控制網路物件。因為這個是玩家物件,我們總是希望同一個客戶端能夠持續控制它。保持所有其他設定不變。
新增一個CharacterController
元件。這稍後將由移動程式碼使用,以移動玩家角色。
下一步是新增一個NetworkTransform
元件到它。
目前玩家物件沒有含有任何視覺效果。在Fusion中與視覺效果有關的所有事情,是放在一個分離的遊戲物件上,其是網路物件的下層。這個網路物件被稱為Interpolation Target
。這確保移動物件時看起來很平順。
Interpolation Target
物件應該含有任何與顯示玩家物件有關的事情。所以比如網格轉譯器、動畫工具、音源及粒子系統等元件。
以右鍵按一下階層並且選擇3d Object > Capsule
。重新命名遊戲物件為Interpolation Target
並且 從它移除膠囊碰撞器。
在PlayerCharacter
物件的NetworkTransform
上,設定InterpolationTarget
欄位為Interpolation Target
遊戲物件。
拖曳PlayerCharacter
到Project
視窗之中,以建立一個預製件,並且從場景刪除它。有了這些,已經準備好生成玩家角色。
玩家生成
不同於單一玩家遊戲,在場景中只有一個單一玩家物件是不足夠的。針對多人玩家遊戲,需要針對各個加入遊戲階段的玩家來生成玩家物件。為了做到這點,需要一個自訂指令碼。建立一個PlayerSpawner
指令碼並且開啟它。新增以下程式碼到它:
C#
using Fusion;
using UnityEngine;
public class PlayerSpawner : SimulationBehaviour, IPlayerJoined
{
public GameObject PlayerPrefab;
public void PlayerJoined(PlayerRef player)
{
if (player == Runner.LocalPlayer)
{
Runner.Spawn(PlayerPrefab, new Vector3(0, 1, 0), Quaternion.identity, player);
}
}
}
生成程式碼是非常簡單的。IPlayerJoined
介面有一個PlayerJoined
函數,如果行為與運行器在同一個遊戲物件上的話,在一個玩家加入遊戲階段時將調用該函數。這個情況發生在我們自己的玩家上,也發生在從一個不同的裝置加入的任何其他玩家上。只需要針對我們自己的玩家來生成一個玩家物件。當一個物件以Runner.Spawn
被生成,它會自動複製到所有其他客戶端。
模擬行為
用於存取 網路運行器
,其含有所有關於目前遊戲階段的資訊,包含本機玩家的玩家ID。新增PlayerSpawner
元件到Prototype Runner
遊戲物件,並且指派玩家預製件到它。
有了這個,玩家生成已經完全設定好。輸入遊玩模式並且按下Start Shared Client
以在共享模式中啟動Fusion。在場景中將生成一個玩家膠囊。目前玩家無法移動或與任何東西互動。在下一個章節我們將透過執行玩家移動來讓玩家活起來。
下一章是共享模式基礎3 - 移動及相機
Back to top