VRシューティングゲームの作り方では、UnityとPlaymakerを使ってVRシューティングゲームを作り、STYLYにアップロードして公開するまでをレクチャーします。
今回は、前回制作した銃コントローラに弾丸の設定をする方法をご紹介します。
- 事前準備
- 銃コントローラ設定
- 弾丸の設定
- 敵キャラクター発生方法
- 敵キャラクターの設定
- BGMとSEの設定
- STYLYにアップロードする方法
Part.1〜7まで続いてますので、最後まで読んで作ってみましょう!
前回はゲームに使用する銃コントローラの設定を行いました。
弾丸の設定
まず空のGame ObjectをScene Hierarchy内に作り、「bullet」と名前をつけます。
前回の記事で設定した銃オブジェクトのRainbowCrossbowのように、Scene Editorで視覚的に弾丸プレハブを作成し、プレハブを適切なコントローラFSMに挿入する前に微調整します。

bulletというゲームオブジェクトを作成
FPL_ISBITのWeapons Packフォルダ内の3Dセクションの下にある「Teddy Grenade」アセットを見つけて、弾丸オブジェクトにドラッグして子にします。

Teddy Grenadeをドラッグ
Scene Editorの画面に次のように表示されます。
クマが中心を外れている場合は、InspectorのTransformコンポーネントの下にある歯車のアイコンをクリックして、「リセット」を選択してください。
Capsule Colliderの設定
bulletの設定
次に、弾丸を選択し、InspectorウィンドウでAdd Compnentを選択し、次に「Capsule Collider」を検索します。
見つかったら、クリックしてこのコンポーネントを弾丸に追加します。

Capsule Colliderを追加
Colliderの形を編集して、おおまかにクマを包みます。
Edit Colliderをクリックし、クリック&ドラッグ編集を有効にするか、直接半径と高さを変更してColliderを操作します。

Colliderの形を編集
また、弾丸に「Rigid Body」を与えて、ゲーム世界の物理学が適用されるようにしてください。
弾丸が飛んでいく時に落ちて現実世界のようになるよう「Use Gravity」がチェックされているか確認してください。

Rigid Bodyにチェック
TeddyGrenadeの設定
TeddyGrenadeにもcolliderを作成しますが、弾丸に設置したcolliderよりも少し大きくしてください。
これはTeddyGrenadeのcolliderが敵との接触で特定のアクションをトリガーするトリガーになるためですが、トリガーはアセットが床などの他のオブジェクトと衝突するのを防ぎます。
したがって、弾丸の実際のcolliderよりも大きいトリガー領域が必要で、銃弾が跳ね返る前に衝突する際に敵のモデルとトリガー領域が重なり合います。
銃弾には適切なcolliderが必要で、敵や床から跳ね返えらせるものであってはなりません。

TeddyGrenadeにもcolliderを作成
TeddyGrenadeのcolliderをトリガーにするために、Inspector内のTeddyGrenadeのcolliderプロパティスクリーンの「Is Trigger」ボックスにチェックを入れます。

Is Triggerにチェック
FSMの設定
Moving Forward ステートの作成

Moving Forwardステートを作成
bulletゲームオブジェクトをクリックし、「Moving Forward」と呼ばれるステートを作ります。
AddForce アクションの追加
Moving Forwardステート内に「AddForce」アクションを作り、Z方向の値に4000としforceを設定します。
他の方向軸はそのままにしておきます。
これにより、クマの弾丸が銃から飛ぶようになります。

AddForceアクションを追加
ここではワールドのZ方向ではなく銃弾の方向がcrossbowのメインとなる軸から直接向いている方向を意味するため、SpaceをSelfに設定し、Z方向がゲーム世界自体ではなく、銃弾に紐付いていることを確認してください。
イベントを作成
ここで「die」と呼ばれるイベントを作成し、Moving Forwardステートへの遷移として追加します。
次に、ステートにWaitアクションを追加し、対応するボックスにチェックを入れてリアルタイムで20秒に設定します。
finishイベントも「die」に設定してください。 これにより、弾丸が20秒後に破壊されるdieステートに入ります。
これは画面が弾丸によっていっぱいになり、時間の経過とともにゲームが大きく遅れることになることを避ける上で必要です。

dieイベントを追加
Dying ステートの作成
弾丸の破壊を確実にするために、「Dying」というステートを作り、それを「die」ステートからの遷移矢印につなぎます。
次に、Destroy SelfアクションブラウザーからDyingステートに追加します。
このアクションは、弾丸を完全にシーンから削除します。
Detach Childrenはチェックを入れないままにし、bulletが破壊されるとTeddyGrenadeアセットがくっついたままになりbulletとともに削除されます。

Dyingステートを作成
プレハブ化する
bulletをmyPrefabsフォルダにドラッグしてそれをプレハブにします。

bulletをプレハブ化
ここで、gunController_RゲームオブジェクトのFSM内のSpawning Bulletステートに戻ります。
新しいbulletプレハブを前回の記事でunfinishedのままにしていたCreate ObjectアクションのGame Objectフィールドの中にドラッグします。
小さな赤い警告マークが隣に出るはずですので、見つけやすいと思います。

bulletをCreate Objectにドラッグ
これにてUnity Scene Editor上で編集する必要がないため、Scene Hierarchyから弾丸のプレハブを削除します。

bulletを削除
弾丸の設定は以上です。
次回は、敵の数を管理するEnemy Counterと敵を生成する Spawnerの設定方法をご紹介します。
サンプルScene
サンプルゲームはSTYLY GALLERYから体験できます。