複数のシーンをつくる時に便利!プレイヤーをワールド内でワープさせるギミックをつくる

投稿者:

「Creators Guide」は、メタバースプラットフォーム「cluster」で「つくる」ことにチャレンジしてみたい方に向けた導入ガイドです。

Creators Guideで読むことができるすべての情報はこちらにまとめています。


今回の記事ではプレイヤーを同じワールド内の離れた場所にワープさせる仕組みについて説明します。

広大なワールドを一瞬で移動したり、思いがけないところに突然飛ばされたりと面白い使い方ができる機能なので試してみてください。

事前準備

まず、clusterにワールドをアップロードできる環境を事前に用意してください。

準備はこちらを参考にしてください。

はじめてのワールド作成

上記で紹介する方法以外ではテンプレートプロジェクトを利用するのがおすすめです。下記URLからテンプレートプロジェクトをダウンロードして、Unityで開くことで、clusterへアップロードする環境まで一気に準備することができます。
テンプレートワールドって何?って方はこちらの記事で導入方法を解説しているので、ぜひご覧ください。動画でも解説しています。

プレイヤーをワープさせるギミック

Cluster Creator Kitにはプレイヤーをワープさせるギミックが「Player Enter Warp Portal」と「Warp Player Gimmick」の2種類あります。

今回の記事ではテンプレートワールド「アスレチック」を改変して、それぞれのコンポーネントの使い方を説明していきます。

ある場所に行くとワープする──「Player Enter Warp Portal」を使う

まずは、「Player Enter Warp Portal」を使ったワープのつくり方です。
このコンポーネントは「コライダーに触れたときにワープする」言い換えれば「あるエリアに入ったときにワープする」というギミックがつくれるものです。

このコンポーネントを使って、あるエリアに入るとスタートから一気にゴールできるワープ機能をつくってみます。

ワープする地点を設定するためのオブジェクトを配置する

早速作ってみましょう。

  • まずはアスレチックのシーンを開きます(開き方が分からない方はこちらの記事を!)
  • Assets/ClusterCreatorKitTemplate/Playground/ScenesフォルダにあるPlaygroundというシーンファイルを開きましょう。以下のようにアスレチックが表示されます

このワールドにワープギミックを追加していきます。

  • Create Emptyで空のオブジェクトを設置してください
  • 矢印を引っ張るかTransformに数値を入力してワープポータルを置きたい位置に移動させましょう。ここでは最初のゲートの手前に置いてみます
  • オブジェクトの名前は「WarpPortal」としてください
  • 次に、ワープ先の位置にも同様に空のオブジェクトを設置しましょう
  • こちらは名前を「WarpTarget」としてゴールに置きます

ワープエリアに入ったことを検出するための設定をする

  • 続いて、ワープの仕掛けに必要な「Box Collider」というコンポーネントを追加します。

Colliderとは当たり判定のことで、他のColliderとの衝突による物理挙動の処理や、接触の検出に使います。ここではプレイヤーとの接触を検出したときにワープ機能を発動するために使います。

Box Colliderを追加したら大きさと位置を調整します(緑色の枠で示されている部分がColliderの範囲です)。

  • SizeとCenterに数値を入力するか、Edit Colliderのボタンで編集モードにして操作します。
  • さらに、Is Triggerという項目にチェックを付けましょう。ここにチェックが付いていると、他のColliderとの接触の検出だけを行い、物理的な衝突は起こらず中に入ることができるようになります。

「Player Enter Warp Portal」を追加してワープ完成!

Colliderが設定できたら、最後にPlayer Enter Warp Portalを追加します。

  • Player Enter Warp Portalにワープ先を指定する必要があるので、コンポーネントの中のTargetという項目で右端の◎ボタンから選択するか、HierarchyからのドラッグアンドドロップでWarpTargetを選択します。

これでワープ機能の設定は完了です。アップロードして試してみましょう。
ワープポータルの場所に入るとワープするはずです。

また今回は使いませんでしたが、Keep Positionにチェックを入れるとワープ機能の発動時に位置を移動せずプレイヤーの向きだけを強制的に変更することができます。

同様にKeep Rotationにチェックを入れると、こちらはプレイヤーの位置だけを移動して向きを変えないということができます。試してみてください。

アイテムを使うとワープする──「Warp Player Gimmick」を使う

次は「Warp Player Gimmick」を使ったギミックのつくり方を説明します。
このコンポーネントを使うと特定のエリアに入ること以外にも様々な条件でワープさせることができます
今回はボタンを押すとワープする機能をつくってみましょう。

ワープを発動させるためのボタンをつくる

まずはボタンをつくります。

  • 上でつくったWarpPortalは削除し、新しくCreate Emptyで空のオブジェクトを設置して名前を「WarpButton」とします。
  • HierarchyのWarpButtonを右クリックして、子オブジェクトとしてCubeを置き、TransformのScaleを変えてCubeの大きさを調整しましょう。これがボタンの見た目になります。

クリックしたらボタンが作動するようにする

続いてWarpButtonにInteract Item Triggerコンポーネントを追加します。
Interact Item Triggerの付いたアイテムはクリック/タップすることでトリガーを発動させ、ギミックを動作させることができます。

Interact Item Triggerの設定をしていきましょう。

  • +ボタンを押してトリガーを追加
  • TargetはOwner、その隣の入力欄(Key)にはwarpsignalと入力します。ValueはSignalを選択しておきます。

「Warp Player Gimmick」を設定してワープ完成!

続いてWarp Player Gimmickを設定していきます。

  • また新しく空のオブジェクトを作り、名前を「PlayerWarp」として置きます。
  • PlayerWarpにWarp Player Gimmickコンポーネントを追加しましょう。

Warp Player Gimmickはどのオブジェクトに付いていても動作しますが、分かりやすくするため新しい空のオブジェクトにつけておくことをおすすめします。

Warp Player Gimmickの設定をしていきます。

  • TargetはPlayer、Keyには先ほどと同じwarpsignalを入力します。
  • Target Transformにはポータルと同様にWarpTargetを設定しましょう。

このように設定すると、ボタンをクリックしたときにOwner、つまりボタンをクリックしたプレイヤーに向けてwarpsignalというメッセージが発行され、それを検出してWarp Player Gimmickがはたらきプレイヤーをワープさせます。

アップロードして確かめてみましょう。ボタンをクリックするとワープします。

ワープを使えば複数のエリアを移動するワールドや、意外なところが繋がったトリッキーな迷路など面白いワールドがつくれます。ぜひ使ってみましょう!


最後に公式による記事や多くのクリエイターの皆さんによるドキュメントやコミュニティを紹介します。
ぜひ活用して自分だけのワールドを制作してみましょう!

▼ 「Cluster Creator Kit」の全てが分かる公式ドキュメント
Cluster Creator Kit ドキュメントhttps://docs.cluster.mu/creatorkit/

▼ クリエイターによる投稿記事まとめ
ワールド制作部https://note.com/cluster_official/m/m1fd772ab8f45
アバター制作部https://note.com/cluster_official/m/m6b18e343f35c
イベント制作部https://note.com/cluster_official/m/m7155e6f6887f

▼ 分からないことがあればコミュニティを活用してみましょう!
Cluster Creator Community Discord
https://discord.gg/DHQmAfDhkt