「Unity/photon/fusion/SharedMode」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→シーン初期設定) |
(→同期キャラクタ作成) |
||
行24: | 行24: | ||
#PlayerCharacterのNetworkTransformのInterpoplationTargetに、↑で作成したInterpoplationTargetを入れる。 | #PlayerCharacterのNetworkTransformのInterpoplationTargetに、↑で作成したInterpoplationTargetを入れる。 | ||
#PlayerCharacterをProject側のPrefabsのディレクトリに移動。 | #PlayerCharacterをProject側のPrefabsのディレクトリに移動。 | ||
+ | ==プレイヤー生成== | ||
+ | <pre> | ||
+ | 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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | #PlayerSpawner.csを作り、上記を貼り付ける。 | ||
+ | #"Prototype Runner"オブジェクトにPlayerSpawner.csをAddComponentする |
2023年11月1日 (水) 23:58時点における版
公式
始め方 https://doc.photonengine.com/ja-jp/fusion/current/tutorials/shared-mode-basics/1-getting-started
準備
- アセットのシリアル化を実行 [Edit > Project Settings > Editor > Asset Serialization > ModeのForce Text] (初期設定なので、設定されてるかも)
- Mono Cecilのインストール(Window > Package Manager > 右上+をクリック > Add package from git URL、"com.unity.nuget.mono-cecil"で、追加)
- Unity/photon/fusion/インストール [ショートカット]
シーン初期設定
- 空のシーンを作成
- Window/Fusion/GameObject/Setup/Networkingを選択し、"Prototype Network Start"と、"Prototype Runner"を、追加する。
- Unityを再生すると、Start~な感じのダイアログが出て実行できることを確認。
- SharedModeにするために、"Prototype Network Start"のStartModeをAutomaticにして、AutoStartAsをSharedにする。
同期キャラクタ作成
- 空オブジェクトを作成し、名前を"PlayerCharacter"に
- 作ったObjectのInspectorを開いて、NetworkObjectを、AddComponentする。
- 一旦、NetworkObjectの"Destroy When State Authority Leaves"にチェックして、削除同期させる。
- Allow State Authority Overrideのチェックを外して、他のクライアントが操作できるようにする。
- CharacterControllerをAddComponentする。これはキャラ操作用。
- NetworkTransformをAddComponentする。
- 3dObject/Capsuleを作成し、"Interpolation Target"に名前を変更する。CapsuleColliderを削除。それを、PlayerCharacterの下に、移動。
- PlayerCharacterのNetworkTransformのInterpoplationTargetに、↑で作成したInterpoplationTargetを入れる。
- PlayerCharacterをProject側のPrefabsのディレクトリに移動。
プレイヤー生成
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); } } }
- PlayerSpawner.csを作り、上記を貼り付ける。
- "Prototype Runner"オブジェクトにPlayerSpawner.csをAddComponentする