Interface PlayerScriptPlayer

PlayerScriptを操作するハンドルです。_オブジェクトからアクセスできます。

PlayerScriptはClusterScript.setPlayerScriptで設定することで生成されます。

Hierarchy

  • PlayerScript

Properties

cameraHandle: CameraHandle

カメラワークを制御するためのハンドルを取得します。

isAndroid: boolean

プレイヤーがAndroid環境で入室しているかどうかを取得します。

Quest環境での入室の場合はtrueを返します。

isDesktop: boolean

プレイヤーがデスクトップ環境で入室しているかどうかを取得します。

VR環境やモバイル環境での入室の場合はfalseを返します。

isIos: boolean

プレイヤーがiOS環境で入室しているかどうかを取得します。

isMacOs: boolean

プレイヤーがmacOS環境で入室しているかどうかを取得します。

isMobile: boolean

プレイヤーがモバイル環境で入室しているかどうかを取得します。

VR環境やデスクトップ環境での入室の場合はfalseを返します。

isVr: boolean

プレイヤーがVRデバイスを使用して入室しているかどうかを取得します。

isWindows: boolean

プレイヤーがWindows環境で入室しているかどうかを取得します。

playerId: PlayerId

プレイヤーのPlayerIdです。

sourceItemId: ItemId

ClusterScript.setPlayerScriptを呼び出したPlayer Scriptコンポーネントを持っている元のItemのItemIdです。

Methods

  • Beta

    プレイヤーに速度を加えます。 プレイヤーの最終的な移動速度は、加えられた速度とプレイヤー入力の両方から決定されます。 プレイヤーが地面に接している間、加えられた速度は摩擦と似たような原理で減速し続けます。

    Parameters

    • velocity: Vector3

      加えられる速度 (グローバル座標)

    Returns void

  • PlayerScriptからデータを送信するときのデータサイズを計算して、byte数を返します。 sendに対応していないデータの場合はTypeErrorが発生します。

    Parameters

    Returns number

  • アバターの移動やモーションに関する状態を、ビットマスクされたフラグの一覧として取得します。 定義されているビットフラグは以下の通りです。

    • 0x0001: アバターが接地している場合はオン、ジャンプや落下によって空中にいる場合はオフ
    • 0x0002: アバターがよじのぼり動作を行っていればオン、そうでなければオフ
    • 0x0004: アバターが乗り物に乗っていればオン、そうでなければオフ

    フラグは今後のアップデートでも追加される可能性があるため、ビットフラグをマスクした値を使用してください。

    Example

    // ビットフラグを取得してログ出力する関数の例
    function getStatus() {
    let flags = _.getAvatarMovementFlags();
    let isGrounded = (flags & 0x0001) !== 0;
    let isClimbing = (flags & 0x0002) !== 0;
    let isRiding = (flags & 0x0004) !== 0;
    _.log(`isGrounded: ${isGrounded}, isClimbing: ${isClimbing}, isRiding: ${isRiding}`);
    }

    Returns

    アバターの移動状態に関するステータス

    Returns number

  • プレイヤーのヒューマノイドボーンの位置を取得します。 値はグローバル座標です。 アバターのロードが完了していない場合や、アバターにボーンが存在しない場合はnullが返されます。

    Parameters

    Returns null | Vector3

  • プレイヤーのヒューマノイドボーンの回転を取得します。 値はグローバル座標です。 アバターのロードが完了していない場合や、アバターにボーンが存在しない場合はnullが返されます。

    Parameters

    Returns null | Quaternion

  • Beta

    IDFCを取得します。 IDFCはクリエイターがユーザーを一意に認識するために利用できる文字列です。 この文字列は32文字で、使われる文字は 0123456789abcdef です。 この文字列はPlayerScriptの元となるアイテムをアップロードしたアカウントとユーザーのアカウントとの組によって決定されます。 元となるアイテムとは、 $.setPlayerScript() を呼び出したアイテムのことで、 _.sourceItemId で取得できるアイテムとなります。 ユーザーの使用するデバイスやスペースによっては変化しません。 退室したプレイヤーに対してや、無効なPlayerIdに対してはnullを返します。

    この文字列はコンテンツ体験を向上する目的で利用できます。当社が不適切と判断した場合、予告なく利用を制限させていただく場合もあります。

    Parameters

    • playerId: PlayerId

      取得するプレイヤーのPlayerId

    Returns null | string

  • プレイヤーのPlayerStorageに保存されたデータを取得します。

    クラフトアイテムで実行した場合はエラーになります。

    PlayerStorageの詳細はsetPlayerStorageDataを参照してください。

    Example

    // プレイヤーのゲーム開始時に保存されたレベルを取得するコードの例
    let level;
    const storageData = _.getPlayerStorageData();
    if (storageData === null) {
    level = 1;
    } else {
    level = storageData.level;
    }

    Returns

    PlayerStorageに現在保存されているデータ

    Returns PlayerScriptSendable

  • プレイヤーの現在の位置をグローバル座標で取得します。

    値の取得に失敗した場合、nullを返します。

    プレイヤーの移動状況をより詳細に取得するには、この関数に加えて PlayerScript.getAvatarMovementFlags を利用します。

    Returns

    プレイヤーの現在の位置

    Returns null | Vector3

  • プレイヤーの現在の方向をグローバル座標で取得します。

    値の取得に失敗した場合、nullを返します。

    プレイヤーの移動状況をより詳細に取得するには、この関数に加えて PlayerScript.getAvatarMovementFlags を利用します。

    Returns

    プレイヤーの現在の方向

    Returns null | Quaternion

  • Beta

    プレイヤーの表示名を取得します。 ユーザーは自分の表示名を変更することができ、異なるユーザーが同じ表示名を使うことができます。 退室したプレイヤーに対してや、無効なPlayerIdに対してはnullを返します。

    Parameters

    • playerId: PlayerId

      取得するプレイヤーのPlayerId

    Returns null | string

  • Beta

    プレイヤーのユーザーIDです。 ユーザーは自分のユーザーIDを変更することができますが、 異なるユーザーが同じユーザーIDを同時にもつことはありません。 退室したプレイヤーに対してや、無効なPlayerIdに対してはnullを返します。

    Parameters

    • playerId: PlayerId

      取得するプレイヤーのPlayerId

    Returns null | string

  • Beta

    PlayerScript.showButtonで表示したボタン等を非表示にします。 すでに非表示のボタンに対して呼び出した場合は何も起こりません。

    デスクトップ環境とモバイル環境では、index = 0に対して呼び出した場合は「使う」ボタンの挙動が元に戻り、 UseItemTrigger や ClusterScript.onUse が設定されたアイテムを掴んでいるかどうかに基づいて、「使う」ボタンの表示/非表示が切り替わります。

    Parameters

    • index: number

      ボタンの番号で、0,1,2,3のいずれか。この範囲外の値を指定するとエラーになります

    Returns void

  • アイテムのHumanoidAnimationListに含まれる、humanoidAnimationIdに指定したidのアニメーションを参照するHumanoidAnimationオブジェクトを返します。

    HumanoidAnimationListの詳細はドキュメントを参照してください。

    Parameters

    • humanoidAnimationId: string

    Returns HumanoidAnimation

  • Beta

    アイテムのIcon Asset Listコンポーネントで定義された、iconIdに指定したidに該当するアイコン画像オブジェクトを返します。 詳細はIcon Asset Listを参照してください。 このアイコンは PlayerScript.showButton で表示するために使用できます。

    Parameters

    • iconId: string

      アイコン画像のid

    Returns IconAsset

  • vの内容をtoStringしたものをログに出力します。

    Parameters

    • v: any

    Returns void

  • Beta

    PlayerScript.showButtonで表示したボタンの操作時に呼ばれるコールバック関数を登録します。 コールバックはボタンを押し下げると isDown = true で呼び出され、その後にボタンを離すと isDown = false で呼び出されます。 この関数はボタンの表示状態と関係なく登録でき、ボタンを非表示にしても登録状態は保持されます。

    複数回呼ばれた場合、ボタン番号ごとに最後の登録のみが有効です。

    このコールバックはisDown = trueで呼ばれたあと、必ずしもisDown = falseで呼ばれるとは限りません。 例えば、ボタンを押し下げたあとでhideButtonを呼び出してボタンを非表示にした場合、isDown = falseでのコールバックは呼ばれません。

    Parameters

    • index: number

      ボタンの番号で、0,1,2,3のいずれか。この範囲外の値を指定するとエラーになります

    • callback: ((isDown: boolean) => void)

      ボタンの操作時に呼ばれるcallback関数

        • (isDown: boolean): void
        • Parameters

          • isDown: boolean

          Returns void

    Returns void

  • 毎フレーム呼ばれるcallbackを登録します。 このコールバックは毎フレーム呼ばれることが保証されています。

    複数回呼ばれた場合、最後の登録のみが有効です。

    Example

    // 10秒間隔でログを出力する。
    let t = 0;
    _.onFrame(deltaTime => {
    t += deltaTime;
    if (t > 10) {
    _.log("10 sec elapsed.");
    t -= 10;
    }
    });

    Parameters

    • callback: ((deltaTime: number) => void)
        • (deltaTime: number): void
        • Parameters

          • deltaTime: number

          Returns void

    Returns void

  • PlayerHandle.send、またはPlayerScript.sendToPlayerId宛てに送られたメッセージを受け取ったときに呼ばれるcallbackを登録します。

    複数回呼ばれた場合、最後の登録のみが有効です。

    option

    optionで受け取るメッセージの種類を指定できます。

    optionが未設定の場合、 PlayerHandle.sendからのメッセージとPlayerScript.sendToPlayerId宛てに送られたメッセージの両方を受け取ります。

    • option.itemtrue の場合、PlayerHandle.send から送信されたメッセージを受け取ります。
    • option.itemfalse の場合、PlayerHandle.send から送信されたメッセージを無視します。
    • option.item が未設定の場合、PlayerHandle.send から送信されたメッセージを受け取ります。
    • option.playertrue の場合、PlayerScript.sendTo から送信されたメッセージを受け取ります。
    • option.playerfalse の場合、PlayerScript.sendTo から送信されたメッセージを無視します。
    • option.player が未設定の場合、PlayerScript.sendTo から送信されたメッセージを受け取ります。

    Example

    // 送られたメッセージをログを出力する。
    _.onReceive((messageType, arg, sender) => {
    _.log(`Received message: ${messageType}, ${arg}`);
    });

    Example

    // 送られたメッセージをログを出力する。アイテムからのメッセージのみを受け取る。
    _.onReceive((messageType, arg, sender) => {
    _.log(`Received message: ${messageType}, ${arg}`);
    }, { player: false, item: true });

    Parameters

    • callback: ((messageType: string, arg: PlayerScriptSendable, sender: PlayerId | ItemId) => void)

      senderは送信元のアイテムまたはプレイヤーを表します。

    • Optional option: { item: boolean; player: boolean }

      コールバックの登録のオプションです。受け取るメッセージの種類を指定できます。

      • item: boolean
      • player: boolean

    Returns void

  • アイテムのPlayer Local Object Reference Listコンポーネントで定義された、idに指定したidに該当するオブジェクトを返します。 詳細はPlayer Local Object Reference Listを参照してください。 定義されていないidを指定した場合や、オブジェクトは存在するもののコンポーネントで指定された条件にマッチしない場合にはnullを返します。

    Parameters

    • id: string

      オブジェクトのid

    Returns null | PlayerLocalObject

  • Beta

    レイが最初に衝突した物体を取得します。

    Returns

    衝突した物体 (衝突しなかった場合はnull)

    Parameters

    • position: Vector3

      レイの原点 (グローバル座標)

    • direction: Vector3

      レイの方向 (グローバル座標)

    • maxDistance: number

      衝突判定を行う最大距離

    Returns null | PlayerScriptRaycastResult

  • Beta

    レイが衝突した全ての物体を取得します。

    大量のコライダーが範囲に含まれる場合に、条件を満たしたすべてのItemHandleを取得できない場合があります。 この場合、コンソールに警告メッセージが出力されます。

    Returns

    衝突した物体の配列 (順序は未定義)

    Parameters

    • position: Vector3

      レイの原点 (グローバル座標)

    • direction: Vector3

      レイの方向 (グローバル座標)

    • maxDistance: number

      衝突判定を行う最大距離

    Returns PlayerScriptRaycastResult[]

  • Beta

    プレイヤーに設定された移動速度、ジャンプ速度、重力をリセットします。 PlayerHandleで指定された移動速度、ジャンプ速度、重力もリセットされます。

    Returns void

  • Beta

    プレイヤーをリスポーンさせます。

    Returns void

  • アイテム・プレイヤーにメッセージを送ります。 送られた対象はClusterScript.onReceivePlayerScript.onReceiveに設定したコールバックを呼ぶことが期待されます。 メッセージのペイロード(arg引数)に使用できるデータについてはPlayerScriptSendableを参照してください。

    削除されたアイテムに対してや、無効なItemIdに対しては無視されます。 退室したプレイヤーに対してや、無効なPlayerIdに対しては無視されます。

    ItemIdに対して送信した場合、PlayerScriptSendableSendableに変換されます。

    頻度の制限:

    sendToを呼び出すことができる頻度には制限があります。

    • クラフトアイテムからの呼び出しであった場合、ひとつのアイテムあたり10回/秒以下
    • ワールドアイテムからの呼び出しであった場合、スペース内の全てのワールドアイテムからの send, send, sendTo の呼び出し回数の合計が3000回/秒以下

    瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。 制限を超えている場合、ClusterScriptError (rateLimitExceeded)が発生し操作は失敗します。

    流量制御:

    このAPIを含む、他のアイテム・プレイヤーの状態を変更するAPIがスペース内で限度を超えて頻繁に呼び出され続けた場合、結果の反映が大きく遅延することがあります。 詳しくは流量制御を参照してください。

    流量制御による制限:

    ワールドアイテムからの実行である場合、sendToが動作するためには、流量制御による遅延が30秒以下である必要があります。 制限を超えている場合、ClusterScriptError (rateLimitExceeded)が発生し操作は失敗します。

    容量の制限:

    エンコードされたargのデータサイズは1000byte以下である必要があります。 データサイズが制限を超えている場合、警告が表示されます。 データサイズはcomputeSendableSizeで計算できます。

    データサイズが制限を大きく超えている場合、ClusterScriptError (requestSizeLimitExceeded) が発生しsendToは失敗します。

    Parameters

    Returns void

  • Beta

    プレイヤーにかかる重力加速度(単位:m/s^2)を変更します。初期値は-9.81です。

    PlayerHandle.setGravityと設定を共有します。 あとから呼び出した方の値で上書きされます。

    Parameters

    • gravity: number

      重力加速度

    Returns void

  • プレイヤーのアバターモデルの特定ボーンの回転を、指定した値にします。 回転はグローバル回転で指定します。 この関数で適用したボーンの回転はそのフレームでのみ適用され、次フレーム以降には影響しません。

    アバターに存在しないボーンを指定してこの関数を呼び出した場合は、何も起こりません。

    この関数で指定したボーンの回転は、PlayerHandle.setHumanoidPose よりも優先されます。 VRではプレイヤーが掴んでいるアイテムは指定されたポーズに追従しますが、1人称のカメラやUI操作などは影響を受けません。

    Parameters

    • bone: HumanoidBone

      回転を指定するボーン

    • rotation: Quaternion

      ボーンに対して設定するグローバル回転

    Returns void

  • プレイヤーのアバターモデルの姿勢を、指定したHumanoidPoseで上書きします。 この関数で適用した姿勢はそのフレームのみで適用され、次フレーム以降には影響しません。

    HumanoidPoseのrootPosition, rootRotation, muscleのうち、指定されていない要素については上書きされません。

    weightは指定した姿勢の適用率を0以上1以下で表し、1を指定すると姿勢が完全に適用されます。 weightは省略でき、省略した場合は1が指定されたものとして扱われます。

    この関数で指定した姿勢は PlayerHandle.setHumanoidPose よりも優先されます。 VRではプレイヤーが掴んでいるアイテムは指定されたポーズに追従しますが、1人称のカメラやUI操作などは影響を受けません。

    Parameters

    • pose: HumanoidPose

      このフレームで適用する姿勢

    • weight: number

      姿勢の適用率

    Returns void

  • Beta

    プレイヤーのジャンプ速度の倍率を変更します。初期値は1です。

    PlayerHandle.setJumpSpeedRateと設定を共有します。 あとから呼び出した方の値で上書きされます。

    Parameters

    • jumpSpeedRate: number

      ジャンプ速度の倍率

    Returns void

  • Beta

    プレイヤーの移動速度の倍率を変更します。初期値は1です。

    PlayerHandle.setMoveSpeedRateと設定を共有します。 あとから呼び出した方の値で上書きされます。

    Parameters

    • moveSpeedRate: number

      移動速度の倍率

    Returns void

  • プレイヤーのPlayerStorageにデータを上書き保存します。

    保存できるデータ(data引数)についてはPlayerScriptSendableを参照してください。

    クラフトアイテムで実行した場合はエラーになります。

    PlayerStorageとは

    PlayerStorageは、各ワールドやイベントでプレイヤーごとに存在する、データを保存するための領域です。 一度もsetPlayerStorageDataが呼ばれていないPlayerStorageにはnullが保存されています。

    ワールドでは、プレイヤーがワールドを離れてもPlayerStorageのデータは保持されます。 プレイヤーが再びそのワールドに戻ると、以前のデータを参照できます。 PlayerStorageにはPlayerId, ItemIdを保存することもできますが、これらはスペースをまたいで有効なプレイヤーやアイテムを指し示すとは限りません。

    イベントでは、プレイヤーがイベントに入場するたびに、PlayerStorageは初期化され、nullがセットされます。 また、イベントでPlayerStorageのデータが上書きされても、イベント開催会場となった元のワールドのPlayerStorageのデータは変更されません。

    PlayerStorageのデータはワールド管理画面から消去することができます。 詳しくはこちらを参照してください。

    容量の制限

    エンコードされたdataのデータサイズは10,000byte以下である必要があります。 データサイズはcomputeSendableSizeで計算できます。

    データサイズが制限を超えている場合、ClusterScriptError (requestSizeLimitExceeded) が発生しsetPlayerStorageDataは失敗します。

    Example

    // レベルアップのメッセージを受け取るとレベルアップし、その結果を保存するコードの例
    let level = 1;
    _.onReceive((messageType, arg, sender) => {
    if (messageType === "levelUp") {
    level += 1;
    _.setPlayerStorageData({ level });
    }
    });

    Parameters

    Returns void

  • プレイヤーの位置をグローバル座標で設定します。

    Parameters

    • position: Vector3

      プレイヤーの位置

    Returns void

  • Beta

    プレイヤーにポストプロセスエフェクトを設定します。

    このメソッドを呼び出すたびに、以前設定されていたPostProcessEffectsは新しいPostProcessEffectsで上書きされます。

    nullを設定するとすべてのエフェクトがクリアされます。

    PlayerHandle.setPostProcessEffectsと設定を共有します。 あとから呼び出した方の値で上書きされます。

    Example

    // 押すととてもまぶしくなるボタン
    _.onButton(0, (isDown) => {
    if (!isDown) return;
    const effects = new PostProcessEffects();
    effects.bloom.active = true;
    effects.bloom.threshold.setValue(0.5);
    effects.bloom.intensity.setValue(10.0);
    _.setPostProcessEffects(effects);
    });

    Parameters

    Returns void

  • プレイヤーの方向をグローバル座標で設定します。

    この関数ではy軸回転のみが適用され、プレイヤーの向きは鉛直のままになります。

    Parameters

    Returns void

  • Beta

    指定した整数値に対応したボタンUIを表示するか、あるいはボタンと同等に扱われるキー/マウスクリック入力等の監視を開始します。 表示済みのボタンに対して呼び出した場合、必要に応じてアイコンが更新されます。 この方法で最大4つのボタン入力を提示できます。

    この関数でボタンを表示するには、ワールドのWorldRuntimeSetting コンポーネントで Use Cluster HUD v2 オプションが有効になっている必要があります。 表示したボタンのコールバックは PlayerScript.onButton で登録します。

    デスクトップ環境とモバイル環境では、index = 0に対応するボタンは、UseItemTrigger が設定されたアイテムの「使う」ボタンと共通のボタンです。 それ以外のボタンは、この関数を呼び出すことでのみ表示されます。 index = 0でこの関数を呼び出した場合、 PlayerScript.hideButtonindex = 0で呼び出すまでの間、 アイテムの「使う」ボタンよりも、この関数で設定したボタンの表示内容と PlayerScript.onButton で登録したコールバックが優先されます。 ボタンを押しても UseItemTrigger は発火せず、 ClusterScript.onUse も呼ばれなくなります。

    この関数で表示したボタンは PlayerScript.hideButton を呼び出すか、あるいはPlayer Scriptの有効期間が終了することで非表示になります。

    モバイル環境では、ボタンは番号に応じて特定の位置に配置されます。 デスクトップ環境では、ボタン0,1,2,3に対してそれぞれ以下のキーアサインが適用されます。

    • 0: 左クリック
    • 1: 右クリック
    • 2: Eキー
    • 3: Rキー

    VR環境では、ボタンを1つ以上有効にしている間に右手コントローラーのトリガーを引くことでパイメニューが表示され、スティックを倒すことでボタン入力が行えます。 パイメニューのボタンは、右から反時計回りに0,1,2,3に対応します。

    デスクトップ環境では、ボタンを1つ以上表示している間は画面上でカーソル操作がロックされ、カーソルロック中のクリックやキー入力がボタン入力として扱われます。 ボタンの表示や非表示を著しく高頻度で繰り返した場合、この自動でのカーソルロックは一定時間無効になります。

    Parameters

    • index: number

      ボタンの番号で、0,1,2,3のいずれか。この範囲外の値を指定するとエラーになります

    • icon: IconAsset

      表示するアイコン画像。無効なアイコンを指定した場合、アイコンが未指定なものとして扱われます。

    Returns void

  • アイテムのWorldItemReferenceListに含まれる、worldItemReferenceIdが指定されたアイテムを参照するItemIdオブジェクトを返します。

    WorldItemReferenceListの詳細はドキュメントを参照してください。

    Example

    // ボタン0を使用すると指定したアイテムに "button" というメッセージを送信するアイテム
    const target = _.worldItemReference("target");

    _.onButton(0, isDown => {
    if (isDown) _.sendTo(target, "button", null);
    });

    Parameters

    • worldItemReferenceId: string

    Returns ItemId

Generated using TypeDoc