HowToReplicatePosition.md
Diarkisプラグインを使って、GameObjectの位置同期をする方法を解説します。
目次
1. プロジェクトのセットアップ
まず新規の Unity プロジェクトを作成します。
次に、DiarkisUnityPlugin.unitypackage
をインポートします(詳しくは HowToUsePlugin.md を参考にしてください)。
最後にDiarkisNetworkManager
のプレハブに Diarkis との接続情報をセットし、それをシーンに配置します。
これでセットアップは完了です。
2. アセットの追加
ここでは、キャラクターを同期させる方法を確認するために、Unity の標準アセットを使用して同期の手順をご説明します。 例えば、Unity の Asset Store から 「Third Persion Character Controoller」 を使用した場合の説明になります。ここは適宜ご利用のアセットに置き換えてご確認ください。
Package Manager から、Third Persion Character Controoller
を Download を行い Import します。
Import Unity Package で Import ボタンでインポートします。
サンプル作業用に、Assessts > Diarkis
以下に、Sample フォルダを作成して以下 3 つのフォルダを作成します。
Third Persion Character Controoller
付随の背景データを使用します。Assessts > StarterAssets > ThirdPersonController > Scenes > Playground
ファイルを Assessts > Diarkis > Sample > Scenes
にコピーして、DiarkisSampleScene
に Rename します。
2. Roomの自動作成
位置を同期するためには、なんらかの部屋(Room
)に参加している必要があります。
ここでは話を単純化するために、シーンが再生されたらRoom.JoinRandom
を使い、自動的に部屋を作成するようにします。
本ドキュメント説明用のサンプルコードをHowToReplicatePostion_SampleCode
フォルダに用意しております。同梱の Scripts
フォルダを Assessts > Diarkis > Sample > Scripts
に上書きコピーしてご利用頂けます。
右クリックからコンテキストメニューから
Create Empty
で空 GameObject を作成して、SceneManager
と名前を変更Diarkis > Sample > Sctipts > Game
のDiarakiSampleGameManager.cs
をドラッグ・アンド・ドロップしてアタッチします。
同じく
CoreEvent
とオブジェクト作成します。Diarkis > Runtime > Extension > MonoBehaviour > Callbacks
のDiarkisCoreEventCallback.cs
をドラッグ・アンド・ドロップしてアタッチします。On Network Connect
にSceneManager
のDiarakiSampleGameManager.OnNetworkConnect
を指定します。
同じく
RoomEvent
とオブジェクト作成します。Diarkis > Runtime > Extension > MonoBehaviour > Replication > Room
のDiarkisRoomRepMananger.cs
をドラッグ・アンド・ドロップしてアタッチします。各種コールバック (OnRoomCreate, OnRoomJoin, OnRoomLeave, OnRoomMemberJoin, OnRoomMemberLeave) を指定します。
SceneManager
を選択します。Room Rep Manager
にRoomEvent
をアタッチします。
DiarkisRoomRepManager
は DiarkisRoomEventCallback
を継承したクラスで、 Room
イベントをそのまま扱えるだけでなく、レプリケーション用の便利な機能がいろいろ追加されています。
3. キャラクター・プレハブの作成
プレイヤーが操作するキャラクターを作成していきます。
Assets > StarterAssets > ThirdPersonController > Prefabs
のPlayerArmature
を、Assessts > Diarkis > Sample > Prefabs
にコピーして、DiarkisPlayerArmature
に名前を変更します。
位置同期したいキャラクターにはDiarkisGameObject
を継承させ、 以下の 3 つの関数を正しく実装する必要があります。
4. スポーンの設定
キャラクターを生成する場所を指定する。
PlayerSpawnPoint
作成してキャラクターが発生する位置Position
を指定します。
RoomEvent
のPlarPrefab
にDiarkisPlayerArmature
をアタッチします。RoomEvent
のAutoSpawnTransform
にPlayerSpawnPoint
をアタッチします。
DiarkisSampleScene
からPlayerArmature
を削除します。
Play で、他のクラアントのリモート・キャラクターの位置が同期できるようになります。
最終更新