見出し画像

RidableItem と GrabbableItem を使用中のプレイヤーが取得できるようになりました!【Cluster Creator Kit v2.27.0 リリースノート】

こんにちは、プロダクトマネージャーの Smith です。

メタバースプラットフォーム cluster では、クリエイターのみなさんの創造力をより加速できるように制作環境の改善や新機能の追加を行っています。
この記事では 11/11 の Cluster Creator Kit(以下、CCK) v2.27.0 で新たに提供される機能の仕様を紹介します。


Creator Kit v2.27.0 の利用方法

今回のリリースに含まれる機能を利用するためには Cluster Creator Kit のアップデートは不要ですが、 cluster アプリのアップデートが必要です。

Creator Kit v2.27.0 のリリース内容

  • 機能追加

    • RidableItem や GrabbableItem を使用中のプレイヤーを取得できる API [CCK]

機能追加

RidableItem や GrabbableItem を使用中のプレイヤーを取得できる API

onRide や onGrab のコールバック引数以外にアイテムに乗っているプレイヤーやアイテムを掴んでいるプレイヤーを取得できる API を追加しました。

これまでのコールバック引数のみでは、アイテムに乗っていたり掴んでいる最中のプレイヤーの退室などによるアイテムに乗っている状態の解除や、手放していることを検知できませんでした。
今回追加された API を定期的に呼び出すことで、より正確にアイテムが使用されなくなった状態を検知できるようになります。
以下は RidableItem に乗っているプレイヤーの表示名を TextView に設定するサンプルです。

const label = $.subNode("label");

$.onUpdate(deltaTime => {
  let ridingPlayer = $.getRidingPlayer();
  if (ridingPlayer !== null) {
    label.setText(ridingPlayer.userDisplayName);
  } else {
    label.setText("");
  }
});

また、以下のようにしてユーザー操作によって降りたケースと乗っている最中に退出や切断がされたケースの処理を分けることができます。

const label = $.subNode("label");

const speed = 1.0;
const range = 2.0;
const direction = new Vector3(1.0, 0.0, 0.0).normalize();

$.onStart(() => {
  $.state.isRiding = false;

  $.state.initialized = true;
  $.state.pivot = $.getPosition();
  $.state.time = 0.0;
});

$.onRide((isGetOn, player) => {
  $.state.isRiding = isGetOn;
  if (isGetOn) {
   // 乗ったときの処理
   label.setText("乗る操作をした");
  } else {
    // 降りたときの処理(正常系)
   label.setText("降りる操作をした");
  }
});

$.onUpdate(deltaTime => {
  if ($.state.isRiding) {
    if ($.getRidingPlayer() === null) {
      $.state.isRiding = false;

      // 乗っている最中に退出や切断がされたときの処理(異常系)
     label.setText("乗っている最中に退出や切断がされた");
    } else {
      // 乗っている間に行う処理
      $.state.time += deltaTime;
      $.setPosition($.state.pivot.clone().add(direction.clone().multiplyScalar(Math.sin($.state.time * speed) * range).applyQuaternion($.getRotation())));
    }
  }
});

API の詳細はドキュメントをご確認ください。
https://docs.cluster.mu/script/interfaces/ClusterScript.html#getRidingPlayer
https://docs.cluster.mu/script/interfaces/ClusterScript.html#getGrabbingPlayer

ご意見・ご感想お待ちしています

cluster は、みなさんが楽しくバーチャル空間で創造できるように様々な改善を行っています。
Discord ではみなさんの要望を投稿したり、クリエイターさん同士でお互いの創作活動を支え合える場所を設けていますので、ぜひご活用ください!

Discordサーバー: Creator Community のご案内
https://docs.cluster.mu/creatorkit/support/creator-community/