Cluster Creator Kit Script Reference
    Preparing search index...

    Class ItemHandleItem

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

    Index

    Properties

    id: string

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

    type: "item"

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

    Methods

    • アイテムの重心に撃力を加えます。アイテムが力の影響を受けない場合は撃力が無視されます。 重心以外に撃力を加えたい場合はItemHandle.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

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

      Returns boolean

    • アイテムにメッセージを送ります。 対象のアイテムは送信されたメッセージをClusterScript.onReceiveに設定したコールバックで受け取ることができます。

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

      メッセージのペイロード(arg引数)に使用できるデータについてはSendableを参照してください。

      undefined など、Sendableではない値をペイロードとしてarg引数に渡した場合、無視されます。 この挙動は将来的に変更される可能性があります。

      Parameters

      • messageType: string

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

      • arg: Sendable

        メッセージのペイロード

      Returns void

      以下は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回/秒以下
      • このスクリプトを実行しているアイテムがワールドアイテムであった場合、スペース内の全てのワールドアイテムからの ItemHandle.send, PlayerHandle.send, PlayerScript.sendTo の呼び出し回数の合計が3000回/秒以下

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

      このAPIを含む、流量制御の対象となるAPIがスペース内で限度を超えて頻繁に呼び出され続けた場合、結果の反映が大きく遅延することがあります。 詳しくは流量制御を参照してください。

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

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

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