あなたの世界を作りなさい
マルチプレイ
マルチプレイルームステート
7分
マルチプレイルームは、接続されたプレイヤーまたはオブジェクトの位置を管理するためのstateプロパティを提供します。 stateのデータ定義は、マルチプレイパッケージの下にあるスキーマファイルから管理されます。 onstatechangeイベントは、クライアントがルームへの接続を成功裏に確立したときに最初に呼び出され、その後、状態データに変更があるたびに呼び出されます。 サーバーapi api 説明 state schema name スキーマファイルで定義されたschema nameフィールドにstateを使用してアクセスできます。 クライアントまたは内部サーバーロジックからのリクエストでフィールド値を変更できます。 変更された状態は、その後、onstatechangeイベントを使用してクライアントに自動的に伝播されます。 📘 以下のガイドを参照してください。 \[ zepeto multiplay(server) api https //developer zepeto me/docs/multiplay server/classes/zepeto multiplay sandbox#state ] import { location } from 'zepeto multiplay schema'; export default class extends sandbox { const location location = this state playerlocation; // 状態の処理。 } api 説明 room onstatechange(state, isfirst) ルームに参加するときに状態変更コールバックを登録できます。 最初にルーム全体の状態を受け取り、その後は変更された状態のみを受け取ります。 クライアントapi import { zepetoscriptbehaviour } from 'zepeto script'; import { location } from 'zepeto multiplay schema'; export default class sampleclient extends zepetoscriptbehaviour { start() { this multiplay roomjoined += (room room) => { room onstatechange += this onstatechange; }; } private onstatechange(state state, isfirst boolean) { const location location = state playerlocation; // 更新された状態を使用してプレイヤーの位置を処理します。 } } スキーマファイルの定義 スキーマは、ルーム内の現在の状態を定義するためのデータ構造です。ルームは主にプレイヤー情報、プレイヤーまたはオブジェクトの位置などを管理するために使用されます。 スキーマを編集するには、プロジェクトビュー → multiplaypackageアセット → schema jsonを選択し、インスペクタウィンドウでワールドに使用するデータ型を変更します。 インスペクタウィンドウでワールドに使用するデータ型を変更できます。 ステップ 1 スキーマタイプの定義 スキーマタイプはワールドで使用されるデータ構造です。インスペクタ → スキーマタイプで、\[+]ボタンを押してデータを追加します。 ステップ 2 ルームステートの追加 ルームステートはワールドルームの現在の状態を示すプロパティであり、上記で定義されたスキーマ構造で表現されます。 スキーマタイプの中から、ワールドの現在の状態として使用されるtyperoom stateを選択し、schema nameとして設定します。 schemas jsonの例 { "state" {"players" {"map" "player"}}, "player" {"sessionid" "string","zepetouserid" "string","transform" "transform","state" "number","substate" "number"}, "transform" {"position" "vector3","rotation" "vector3"}, "vector3" {"x" "number","y" "number","z" "number"} }