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 ボタンでインポートします。

アセットのimport

サンプル作業用に、Assessts > Diarkis以下に、Sample フォルダを作成して以下 3 つのフォルダを作成します。

Sampleフォルダ作成

Third Persion Character Controoller 付随の背景データを使用します。Assessts > StarterAssets > ThirdPersonController > Scenes > Playground ファイルを Assessts > Diarkis > Sample > Scenes にコピーして、DiarkisSampleSceneに Rename します。

Sceneコピー

2. Roomの自動作成

位置を同期するためには、なんらかの部屋(Room)に参加している必要があります。

ここでは話を単純化するために、シーンが再生されたらRoom.JoinRandomを使い、自動的に部屋を作成するようにします。

本ドキュメント説明用のサンプルコードをHowToReplicatePostion_SampleCodeフォルダに用意しております。同梱の Scripts フォルダを Assessts > Diarkis > Sample > Scripts に上書きコピーしてご利用頂けます。

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

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

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

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

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

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

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

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

RoomEvent作成
  1. SceneManager を選択します。

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

SceneManagerのRoomRepManagerにアタッチ

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

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

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

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

  2. Add Component から DiarakiSampleThirdPersonCharacter を選択します。

  3. CameraPrefabPlayerfollowCamera をアタッチします。

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

関数名役割

HasPositionSyncData

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

GetPositionSyncData

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

SetPositionSyncData

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

4. スポーンの設定

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

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

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

RoomEventにDiarakisPlayerArmatureを指定する
  1. DiarkisSampleScene から PlayerArmature を削除します。

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

Play画面

最終更新