最終更新:
orika_ex_miyako 2023年02月03日(金) 23:31:01履歴
プレイヤーが侵入することで獲得できるアイテム用のゲームオブジェクトを作成します。
この手順では複数のゲームオブジェクトを組み合わせて、1つのアイテムのゲームオブジェクトとします。
次の手順において、それらにアタッチするためのスクリプトを作成して完成させます。
想定している動作としては、ムービーの情報(VideoData)とアイテムとをスクリプトを利用して紐付けし、
プレイヤーがアイテムを獲得(アイテムに侵入)したら、アイテムと紐づいているムービーが再生されるようにします。
アイテム側でムービーの情報を管理させることにより、同じアイテムであっても、
管理しているムービーの情報から再生されるムービーが自動的に変化するような設計にします。
このような設計により、たとえ見た目が同じアイテムであっても、獲得した際に再生されるムービーが異なるように動作させます。
ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Create Empty を選択します。
新しいゲームオブジェクトが作成されますので、名前を Item に変更します。
このゲームオブジェクトはゲーム内では見えず、今後制作していくゲームオブジェクトの親となるとともに、
子のゲームオブジェクトをまとめるフォルダとしての役割も持ちます。
インスペクターの一番下にある Add Component ボタンを押し、Rigidbody コンポーネントを追加します。
続けて Rigidbody コンポーネント内の設定を行います。
Use Gravity のチェックを外し、重力の影響を受けない状態にします。
IsKinematic のチェックを入れ、外部からの物理演算の影響を受けない状態にします。
Constraints 内にある FreezeRotation の各項目にチェックを入れ、回転しないようにします。
インスペクター画像

ヒエラルキーにある Item ゲームオブジェクトを選択した状態で右クリックをしてメニューを開き、3D → Cube を選択します。
Item ゲームオブジェクトの子オブジェクトとして Cube ゲームオブジェクトが作成されますので、名前を Item_Model に変更します。
親子関係に注意して作成してください。
このゲームオブジェクトはアイテム本体のゲームオブジェクトです。よって形状については他の形状でも構いませんし、
見た目に関わりますので、アセットを利用しても構いません。サンプルであるため Cube ゲームオブジェクトを利用しているにすぎません。
コンポーネントの設定は不要です。
アセットを利用している場合のみ、ゲーム内でのサイズ感と、コライダーの有無を確認します。
コライダーがない場合には、適宜なプリミティブ型のコライダー(Box や Capsule Collider)を追加してください。
インスペクター画像

Scene ビュー画像

ヒエラルキーにある Item ゲームオブジェクトを選択した状態で右クリックをしてメニューを開き、3D → Cube を選択します。
Item ゲームオブジェクトの子オブジェクトとして Cube ゲームオブジェクトが作成されますので、名前を Item_InfoArea に変更します。
親子関係に注意して作成してください。
このゲームオブジェクトはアイテム本体の周囲に存在するレーダーの役割を持つゲームオブジェクトです。
このゲームオブジェクトのコライダーの範囲内にプレイヤーのゲームオブジェクトを感知出来るようにします。
そのため、MeshRenderer コンポーネントのスイッチを外し、ゲームオブジェクトを見えない状態にしてください。
コライダーのみ機能をさせます。
コライダーについては、プレイヤーのゲームオブジェクトを感知できる範囲になりますので、大きめのサイズに設定してください。
ゲームオブジェクトの Scale ごと調整しても構いません。これは後程、調整を行うことが出来ます。
インスペクター画像(この例では Collider のサイズを大きく設定している)

Scene ビュー画像��

Scene ビュー画像��

ヒエラルキーにある Item ゲームオブジェクトを選択した状態で右クリックをしてメニューを開き、UI → Canvas を選択します。
Item ゲームオブジェクトの子オブジェクトとして Canvas ゲームオブジェクトが作成されますので、名前を Item_View に変更します。
親子関係に注意して作成してください。
このゲームオブジェクトはゲーム画面上にあるアイテムの上にアイテムの名前を表示する機能を持つゲームオブジェクトです。
Canvas ゲームオブジェクトは設定を行うことで、画面全体に常時表示する UI 以外にも、Scene 内に配置して UI を表示させることが可能です。
Canvas コンポーネントの RenderMode を World Space に設定してください。
この設定に合わせて、すぐ下に EventCamera の項目が追加されますので、ヒエラルキーにある MainCamera ゲームオブジェクトをアサインしてください。
この設定を行うことで Canvas ゲームオブジェクトを Scene 内に配置出来るようになります。
この設定にした場合、Canvas のサイズがとても大きいため、RectTransform 内の Scale の各値を 0.05 などの小さな値に変更してください。
Position の値については一旦すべて (0, 0, 0) にしてください。そうすることで、Item ゲームオブジェクトの位置に移動しますので、
そこから上方向に移動して、アイテムの上に位置するように設定してください。
Width と Height の値を調整して上下左右の大きさを調整します。この辺りは通常の UI と同じように設定します。
最後に CanvasGroup コンポーネントをアタッチしてください。設定は変更せずに問題ありません。
インスペクター画像

今までと親子関係が異なりますので、作成する際には注意してください。
ヒエラルキーにある Item_View ゲームオブジェクトを選択した状態で右クリックをしてメニューを開き、UI → TextMeshPro を選択します。
Item_View ゲームオブジェクトの子オブジェクトとして TextMeshPro ゲームオブジェクトが作成されますので、名前を txtInfo に変更します。
親子関係に注意して作成してください。
なお TextMeshPro を利用したことがない、あるいは、フォント用のアセットを作成したくない場合には、Text コンポーネントで代用してください。
ヒエラルキー画像

このゲームオブジェクトは Canvas ゲームオブジェクトの子として UI の役割を持ち、アイテムの名前を表示させる機能を持ちます。
Position や Width、Height については、文字のフォントサイズを考慮して設定してください。
フォントの設定、フォントサイズ、アラインメントの設定は任意ですが、中央揃え・中央位置が作りやすいです。
TextMeshPro には他の設定も可能ですので、任意に設定してください。
インスペクター画像

Scene ビュー画像

これで Item ゲームオブジェクトは完成です。
最後にプレハブにしておきます。ただし、今回はゲーム内での動的生成は行わない実装であるため、
プレハブ後も削除はせず、そのままヒエラルキーに残しておいて大丈夫です。
以上でこの手順は終了です。
=> 次は VideoPlayer を利用したイベント処理の実装例�� です。






コメントをかく