Item
Readonly
id空間内のアイテムを一意に表すIDの文字列表現です。 idが等しいItemHandleは同一のアイテムを指し示します。
Readonly
type文字列 "item" を返します。 この値は ItemHandle と PlayerHandle を区別するために利用できます。
アイテムの重心に撃力を加えます。アイテムが力の影響を受けない場合は撃力が無視されます。 重心以外に撃力を加えたい場合はaddImpulsiveForceAtを使用してください。
ひとつのアイテムは、最大で10回/秒まで他のハンドルに対して操作することができます。
瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。
制限を超えている場合、ClusterScriptError (rateLimitExceeded
)が発生し操作は失敗します。
このAPIを含む、他のアイテム・プレイヤーの状態を変更するAPIがスペース内で限度を超えて頻繁に呼び出され続けた場合、結果の反映が大きく遅延することがあります。 詳しくは流量制御を参照してください。
撃力 (グローバル座標)
アイテムの指定位置に撃力を加えます。アイテムが力の影響を受けない場合単に無視されます。 力を加える先にアイテムの実体 (PhysicalShapeやメッシュ等)が存在する必要はありません。
ひとつのアイテムは、最大で10回/秒まで他のハンドルに対して操作することができます。
瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。
制限を超えている場合、ClusterScriptError (rateLimitExceeded
)が発生し操作は失敗します。
このAPIを含む、他のアイテム・プレイヤーの状態を変更するAPIがスペース内で限度を超えて頻繁に呼び出され続けた場合、結果の反映が大きく遅延することがあります。 詳しくは流量制御を参照してください。
アイテムの重心に角力積を加えます。アイテムが力の影響を受けない場合単に無視されます。
ひとつのアイテムは、最大で10回/秒まで他のハンドルに対して操作することができます。
瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。
制限を超えている場合、ClusterScriptError (rateLimitExceeded
)が発生し操作は失敗します。
このAPIを含む、他のアイテム・プレイヤーの状態を変更するAPIがスペース内で限度を超えて頻繁に呼び出され続けた場合、結果の反映が大きく遅延することがあります。 詳しくは流量制御を参照してください。
角力積 (グローバル座標)
アイテムにメッセージを送ります。送られた対象はClusterScript.onReceiveに設定したコールバックを呼ぶことが期待されます。
メッセージのペイロード(arg
引数)に使用できるデータについてはSendableを参照してください。
削除されたアイテムに対してや、無効なitemHandleに対しては無視されます。
以下は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を呼び出すことができる頻度には制限があります。
瞬間的にこの制限を超えることはできますが、平均回数はこの制限を下回るようにしてください。
制限を超えている場合、ClusterScriptError (rateLimitExceeded
)が発生し操作は失敗します。
このAPIを含む、他のアイテム・プレイヤーの状態を変更するAPIがスペース内で限度を超えて頻繁に呼び出され続けた場合、結果の反映が大きく遅延することがあります。 詳しくは流量制御を参照してください。
このスクリプトを実行しているアイテムがワールドアイテムである場合、sendが動作するためには、流量制御による遅延が30秒以下である必要があります。
制限を超えている場合、ClusterScriptError (rateLimitExceeded
)が発生し操作は失敗します。
エンコードされたarg
のデータサイズは1000byte以下である必要があります。
データサイズが制限を超えている場合、警告が表示されます。
データサイズはcomputeSendableSizeで計算できます。
データサイズが制限を大きく超えている場合、ClusterScriptError (requestSizeLimitExceeded
) が発生しsendは失敗します。
メッセージの種別を表す100byte以下の任意の文字列
メッセージのペイロード
Generated using TypeDoc
アイテムを外部から操作するためのハンドルです。 ハンドルは自分自身を指していることも、それ以外を指していることも、指している先が存在しないこともあります。