アイテムを外部から操作するためのハンドルです。 ハンドルは自分自身を指していることも、それ以外を指していることも、指している先が存在しないこともあります。

Hierarchy

  • ItemHandle

Properties

id: string

空間内のアイテムを一意に表すIDの文字列表現です。 idが等しいItemHandleは同一のアイテムを指し示します。

type: "item"

文字列 "item" を返します。 この値は ItemHandlePlayerHandle を区別するために利用できます。

Methods

  • アイテムの重心に撃力を加えます。アイテムが力の影響を受けない場合は撃力が無視されます。 重心以外に撃力を加えたい場合はaddImpulsiveForceAtを使用してください。

    頻度の制限:

    ひとつのアイテムは、最大で10回/秒まで他のハンドルに対して操作することができます。 瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。 制限を超えている場合、ClusterScriptError (rateLimitExceeded)が発生し操作は失敗します。

    流量制御:

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

    Parameters

    • force: Vector3

      撃力 (グローバル座標)

    Returns void

  • アイテムの指定位置に撃力を加えます。アイテムが力の影響を受けない場合単に無視されます。 力を加える先にアイテムの実体 (PhysicalShapeやメッシュ等)が存在する必要はありません。

    頻度の制限:

    ひとつのアイテムは、最大で10回/秒まで他のハンドルに対して操作することができます。 瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。 制限を超えている場合、ClusterScriptError (rateLimitExceeded)が発生し操作は失敗します。

    流量制御:

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

    Parameters

    • impulse: Vector3

      撃力 (グローバル座標)

    • position: Vector3

      位置 (グローバル座標)

    Returns void

  • アイテムの重心に角力積を加えます。アイテムが力の影響を受けない場合単に無視されます。

    頻度の制限:

    ひとつのアイテムは、最大で10回/秒まで他のハンドルに対して操作することができます。 瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。 制限を超えている場合、ClusterScriptError (rateLimitExceeded)が発生し操作は失敗します。

    流量制御:

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

    Parameters

    • torque: Vector3

      角力積 (グローバル座標)

    Returns void

  • Beta

    アイテムが存在する場合、trueを返します。 ロード中でもtrueを返すことがあります。

    Returns boolean

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

    削除されたアイテムに対してや、無効なitemHandleに対しては無視されます。

    Example

    以下はClusterScript.onReceiveの例に対応するメッセージの例です。

    itemHandle.send("damage", 20);
    itemHandle.send("heal", 10);

    以下の例では、アイテムを使用したプレイヤーのハンドルを"chase"というメッセージタイプで周囲2m以内のアイテムに対して送信します。

    $.onUse((isDown, player) => {
    if (!isDown) return;
    let items = $.getItemsNear($.getPosition(), 2);
    for (let item of items) {
    item.send("chase", player);
    }
    });

    受け取ったメッセージをどう処理するかは、受け取る側のアイテムのClusterScript.onReceiveに記述します。 以下の例では、アイテムはプレイヤーを5秒間追いかけます。

    $.onReceive((messageType, arg, sender) => {
    switch (messageType) {
    case "chase":
    $.state.target = arg;
    $.state.time = 0;
    break;
    }
    });

    $.onUpdate(deltaTime => {
    let target = $.state.target;
    if (!target) return;

    let time = $.state.time ?? 0;
    time += deltaTime;
    $.state.time = time;

    if (time > 5) {
    $.state.target = null;
    return;
    }

    $.setPosition($.getPosition().lerp(target.getPosition(), 0.02));
    });

    頻度の制限:

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

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

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

    流量制御:

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

    流量制御による制限:

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

    容量の制限:

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

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

    Parameters

    • messageType: string

      メッセージの種別を表す100byte以下の任意の文字列

    • arg: Sendable

      メッセージのペイロード

    Returns void

Generated using TypeDoc