はじめに
今回はクイズに正解するとポータルを表示させる方法を紹介します。
クイズとテレポートを組み合わせて作ります。

このようなワールドがある事を前提に進めます。

ワールドの作り方はこちらをご覧ください。
クイズの導入
こちらのページにアクセス。

本体の下にある無料ダウンロードを押します。

DLした.zipを右クリック → すべて展開を選択。

中にある.unitypackageをワールドのProjectにドラッグ&ドロップ。

Importを押して読み込み。

Import TMP Essentials → Import TMP Examples & Extrasの順に選択して必要な機能を読み込み。

Project → Assets → ax-item → Quizを開きます。
Quiz.prefabがある事を確認。

Quiz.prefabをHierarchyにドラッグ&ドロップ。
位置を調整。

HierarchyのQuizを選択。
Inspectorで下記のように設定
・必須正解数=2
・許容誤答数=0
・解説の表示 → チェックを解除
・最終成績の表示 → チェックを解除
・スコアの表示 → チェックを解除
必須正解数は2が主流なので2にしました。
変えたい方は自由に変えてください。

HierarchyでQuizを右クリック。
Unpack Prefabを選択。

『これを複製してQuizItemに入れる』をQuizItemに入れます。

『これを複製してQuizItemに入れる』を選択。
Inspectorより問題文や選択肢を設定。
Answer_indexのSizeを1、Element 0を0に設定。
Element 0の選択肢のみ正しい答えにします。

Hierarchyで『これを複製してQuizItemに入れる』を選択。
Ctrl+Dで複製。

新しく問題文や選択肢を設定します。
これを欲しい問題数の数だけ繰り返します。

Quizを開きfailedを選択。
チェックを入れて表示を有効化。

failedの中を開きresult-textを選択。
Inspector → TextMeshPro – Textより間違えた場合に表示される文章を入力。
(『再挑戦の際は入りなおしてください』などで大丈夫です)

failedのチェックを外し非表示化。
succesを選択 → チェックを入れて表示。

succesの中を開きresult-textを選択。
Inspector → TextMeshPro – Textより正解した場合に表示される文章を入力。

Bulid & Testで動作を確認。

これでクイズの導入が完了です。
テレポートの導入
こちらのページにアクセス。

無料ダウンロードを押します。

DLした.zipを右クリック → すべて展開を選択。

Projectに中にある.unitypackageをドラッグ&ドロップ。

Importを押します。

ProjectよりAsstes → mmmsys → FaceTeleportを開きます。
中にあるPortal_FadeTeleportPrefab.Prefabを選択。

HierarchyにPortal_FadeTeleportPrefab.Prefabをドラッグ&ドロップ。

さらにFT_FadeObjectもドラッグ&ドロップ。

Portal_FadeTeleportPrefabを開きます。
Fade ObjectにFT_FadeObjectを設定。

ここからは双方向か一方向かで行う処理が変わります。
双方向テレポートの場合
Hierarchyで中を開きます。
FT_Portal_BとFT_Point_Bを選択。
この2つをまとめて移動させます。

HierarchyにFT_FaceObjectをドラッグ&ドロップ。

FT_Portal_Aを選択。
Inspector → Face Objectの所にHierarchyのFT_FaceObjectをドラッグ&ドロップで設定。

FT_Portal_Bを選択。
同様にFace Objectの所にHierarchyのFT_FaceObjectをドラッグ&ドロップで設定。

以上で設定が完了です。
一方向テレポートの場合
Hierarchyで中を開きます。
一方通行のポータルにしたい場合FT_Portal_BとFT_Point_Bを選択。
Inspectorでチェックを外し非表示にします。

FT_Point_Aを選択します。
テレポートしたい位置に移動させます。

FT_Portal_Aを選択。
InspectorでTeleport Pointを確認。
HierarchyよりFT_Point_Aをドラッグ&ドロップで割り当て。

HierarchyにFT_FaceObjectをドラッグ&ドロップ。

FT_Portal_Aを選択。
Inspector → Face Objectの所にHierarchyのFT_FaceObjectをドラッグ&ドロップで設定。

Disable Objectを開きます。
Element 0の所にFT_Portal_Bが設定されています。

この状態だと一度ポータルを入った際にFT_Portal_Bが表示される不具合が起こります。

Element 0の中身を選択。
BackSpaceキーを押してNoneにします。

以上で設定が完了です。
ポータル表示不具合の修正
ポータルの表示には問題が起こることがあります。
2つ以上配置したり、特定の位置から見ると表示が崩れます。

こちらを調整します。

ProjectよりAssets → mmmsys → FaceTeleport → Othersを開きます。
PortalCircleを選択。

Inspectorを確認。
Enable GPU Instancingにチェックを入れます。

Build & Testで動作確認。

これでポータル表示不具合の修正が完了です。
クイズとポータルを組み合わせる
HierarchyよりQuizを選択。
“◆結果表示 – 合格下の”有効化オプジェクトの▶を押して開きます。

Sizeを1に設定。

HierarchyよりFT_Portal_Aをドラッグ&ドロップで割り当て。

FT_Portal_Aを選択。
チェックを外し初期状態で非表示にします。

これでクイズに正解するとポータルが表示されるようになりました。

不正解の場合は表示されません。

あとはPortalとPointを離れた位置に配置。

Box Colliderを設定して浮遊ツールなどで出られないようにします。

以上でクイズに正解した人しか入れない設定が完了です。
より細かなポータルの設定
ここからはポータルデザイン調整の方法を紹介します。
Project → Asstes → mmmsys → FadeTeleport → Othersを開きます。
PortaltParticleを選択。

Inspectorを確認。
Albedoでパーティクルの色を変えれます。

PortalCircleを選択。

Colorでポータルの色を変えれます。

Threshold、Speed、Sizeでポータルの形を変えれます。

HierarchyでFT_Portal_Aを選択。
InspectorでScaleのXとZの値を調整。
するとポータルの大きさを変えれます。

ポータルの有効範囲はGizmosで確認できます。

FT_FacceObjectを選択。
ここでポータルのフェード時間などを細かく設定できます。

以上でクイズに正解するとポータルを表示させる方法の解説が完了です。
まとめ
今回はクイズに正解するとポータルを表示させる方法を紹介しました。
これは[FREE] Quiz【VRCWorld / U#】と【フェード暗転】やさしいテレポート【VRCSDK3 / U#】の組み合わせで実現できます。
また、頭上にタグ表示させる方法なども解説しています。
ぜひこちらもご覧ください。
コメント