特定のプレイヤーにだけ見えるアイテムがつくれる!「Item 可視性 フィルター」を使ってみよう!

「Item 可視性 フィルター」を使うと、下図のようにプレイヤーによってオブジェクトが見えるか見えないかを設定できます。この機能を使うことで、例えば自分だけが見えるオブジェクトをつくることが可能になりました!

10/10に開催された「Item 可視性フィルター」がテーマのCCK勉強会の資料も公開中なので、もっと学びたいという方はこちらの資料もぜひご覧くださ。

今回使用するスクリプトは以下になります。インタラクトされたら以下の状態を交互に繰り返すシンプルな挙動のサンプルです。

  • 最後にインタラクトしたユーザーにのみ見えるようにする
  • 全員に見えるようにする

「Item 可視性 フィルター」を設定したいGameObjectに「Scriptable Item」コンポーネントを追加して、以下のスクリプトを設定してください。
作成したワールドはベータ機能を有効にしてアップロードする必要があります。

$.onStart(() => {
  $.state.limitedVisibility = false;
});

$.onInteract((playerHandle) => {
  if ($.state.limitedVisibility) {
    $.clearVisiblePlayers();
  } else {
    $.setVisiblePlayers([playerHandle]);
  }
  $.state.limitedVisibility = !$.state.limitedVisibility;
});

「Item 可視性 フィルター」のAPIは下記の2つになります。

setVisiblePlayersは特定のプレイヤーに対してのみ見える状態にする API です。clearVisiblePlayersはアイテムを見ることができるプレイヤーの設定をクリアするものです。クリアすることでアイテムが全員に見える状態になります。

なお、変更できるのは「見えるかどうか」と「インタラクト可能か」です。 当たり判定などは変更されません。
詳しい仕様はScript Reference をご覧ください。

今回の記事はインタラクトする形の例でしたが、例えばonGrabなどを使用すると「持っている人だけ見えるアイテム」などがつくれます。

既存の機能と組み合わせることで、色々な表現ができる可能性があります。ぜひ色々と試してみてください!

記事をシェアしてワールド制作を盛り上げよう!

Cluster Creators Guide|バーチャル空間での創作を学ぶならをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む