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 に上書きコピーしてご利用頂けます。

  1. 右クリックからコンテキストメニューから Create Empty で空 GameObject を作成して、SceneManagerと名前を変更

  2. Diarkis > Sample > Sctipts > GameDiarakiSampleGameManager.cs をドラッグ・アンド・ドロップしてアタッチします。

  1. 同じく CoreEventとオブジェクト作成します。

  2. Diarkis > Runtime > Extension > MonoBehaviour > CallbacksDiarkisCoreEventCallback.cs をドラッグ・アンド・ドロップしてアタッチします。

  3. On Network ConnectSceneManagerDiarakiSampleGameManager.OnNetworkConnect を指定します。

  1. 同じく RoomEvent とオブジェクト作成します。

  2. Diarkis > Runtime > Extension > MonoBehaviour > Replication > RoomDiarkisRoomRepMananger.cs をドラッグ・アンド・ドロップしてアタッチします。

  3. 各種コールバック (OnRoomCreate, OnRoomJoin, OnRoomLeave, OnRoomMemberJoin, OnRoomMemberLeave) を指定します。

  1. SceneManager を選択します。

  2. Room Rep ManagerRoomEvent をアタッチします。

DiarkisRoomRepManagerDiarkisRoomEventCallback を継承したクラスで、 Room イベントをそのまま扱えるだけでなく、レプリケーション用の便利な機能がいろいろ追加されています。

3. キャラクター・プレハブの作成

プレイヤーが操作するキャラクターを作成していきます。

  1. Assets > StarterAssets > ThirdPersonController > PrefabsPlayerArmature を、Assessts > Diarkis > Sample > Prefabs にコピーして、DiarkisPlayerArmatureに名前を変更します。

位置同期したいキャラクターにはDiarkisGameObjectを継承させ、 以下の 3 つの関数を正しく実装する必要があります。

関数名役割

HasPositionSyncData

ローカル・キャラクター用の送信する位置同期するデータが存在するかどうか

GetPositionSyncData

ローカル・キャラクター用の位置同期するデータの取得

SetPositionSyncData

リモート・キャラクター用の位置同期するデータのセット

4. スポーンの設定

  1. キャラクターを生成する場所を指定する。PlayerSpawnPoint 作成してキャラクターが発生する位置Positionを指定します。

  1. RoomEventPlarPrefabDiarkisPlayerArmature をアタッチします。

  2. RoomEventAutoSpawnTransformPlayerSpawnPoint をアタッチします。

  1. DiarkisSampleScene から PlayerArmature を削除します。

  1. Play で、他のクラアントのリモート・キャラクターの位置が同期できるようになります。

最終更新