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

Hierarchy

  • ItemHandle

Properties

id: string

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

type: "item"

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

Methods

  • Beta

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

    頻度の制限:

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

    Parameters

    • force: Vector3

      撃力 (グローバル座標)

    Returns void

  • Beta

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

    頻度の制限:

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

    Parameters

    • impulse: Vector3

      撃力 (グローバル座標)

    • position: Vector3

      位置 (グローバル座標)

    Returns void

  • Beta

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

    頻度の制限:

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

    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));
    });

    頻度の制限:

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

    容量の制限:

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

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

    Parameters

    • messageType: string

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

    • arg: Sendable

      メッセージのペイロード

    Returns void

Generated using TypeDoc