【Unity/Playmaker】VRシューティングゲームの作り方 弾丸の設定

VRシューティングゲームの作り方では、UnityとPlaymakerを使ってVRシューティングゲームを作り、STYLYにアップロードして公開するまでをレクチャーします。

今回は、前回制作した銃コントローラに弾丸の設定をする方法をご紹介します。  

  1. 事前準備
  2. 銃コントローラ設定
  3. 弾丸の設定
  4. 敵キャラクター発生方法
  5. 敵キャラクターの設定
  6. BGMとSEの設定
  7. STYLYにアップロードする方法

Part.1〜7まで続いてますので、最後まで読んで作ってみましょう!

 

前回はゲームに使用する銃コントローラの設定を行いました。

弾丸の設定

まず空のGame ObjectをScene Hierarchy内に作り、「bullet」と名前をつけます。

前回の記事で設定した銃オブジェクトのRainbowCrossbowのように、Scene Editorで視覚的に弾丸プレハブを作成し、プレハブを適切なコントローラFSMに挿入する前に微調整します。

Bulletというゲームオブジェクトを作成

bulletというゲームオブジェクトを作成

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

Teddy Grenadeをドラッグ

Teddy Grenadeをドラッグ

Scene Editorの画面に次のように表示されます。

クマが中心を外れている場合は、InspectorのTransformコンポーネントの下にある歯車のアイコンをクリックして、「リセット」を選択してください。

Capsule Colliderの設定

bulletの設定

次に、弾丸を選択し、InspectorウィンドウでAdd Compnentを選択し、次に「Capsule Collider」を検索します。

見つかったら、クリックしてこのコンポーネントを弾丸に追加します。

Capsule Colliderを追加

Capsule Colliderを追加

Colliderの形を編集して、おおまかにクマを包みます。

Edit Colliderをクリックし、クリック&ドラッグ編集を有効にするか、直接半径と高さを変更してColliderを操作します。

Colliderの形を編集

Colliderの形を編集

また、弾丸に「Rigid Body」を与えて、ゲーム世界の物理学が適用されるようにしてください。

弾丸が飛んでいく時に落ちて現実世界のようになるよう「Use Gravity」がチェックされているか確認してください。

Rigid Bodyにチェック

Rigid Bodyにチェック

TeddyGrenadeの設定

TeddyGrenadeにもcolliderを作成しますが、弾丸に設置したcolliderよりも少し大きくしてください。

これはTeddyGrenadeのcolliderが敵との接触で特定のアクションをトリガーするトリガーになるためですが、トリガーはアセットが床などの他のオブジェクトと衝突するのを防ぎます。

したがって、弾丸の実際のcolliderよりも大きいトリガー領域が必要で、銃弾が跳ね返る前に衝突する際に敵のモデルとトリガー領域が重なり合います。

銃弾には適切なcolliderが必要で、敵や床から跳ね返えらせるものであってはなりません。

TeddyGrenadeにもcolliderを作成

TeddyGrenadeにもcolliderを作成

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

Is Triggerにチェック

Is Triggerにチェック

FSMの設定

Moving Forward ステートの作成

Moving Forwardステートを作成

Moving Forwardステートを作成

bulletゲームオブジェクトをクリックし、「Moving Forward」と呼ばれるステートを作ります。

AddForce アクションの追加

Moving Forwardステート内に「AddForce」アクションを作り、Z方向の値に4000としforceを設定します。

他の方向軸はそのままにしておきます。

これにより、クマの弾丸が銃から飛ぶようになります。

AddForceアクションを追加

AddForceアクションを追加

ここではワールドのZ方向ではなく銃弾の方向がcrossbowのメインとなる軸から直接向いている方向を意味するため、SpaceをSelfに設定し、Z方向がゲーム世界自体ではなく、銃弾に紐付いていることを確認してください。

イベントを作成

ここで「die」と呼ばれるイベントを作成し、Moving Forwardステートへの遷移として追加します。

次に、ステートにWaitアクションを追加し、対応するボックスにチェックを入れてリアルタイムで20秒に設定します。

finishイベントも「die」に設定してください。 これにより、弾丸が20秒後に破壊されるdieステートに入ります。

これは画面が弾丸によっていっぱいになり、時間の経過とともにゲームが大きく遅れることになることを避ける上で必要です。

dieイベントを追加

dieイベントを追加

Dying ステートの作成

弾丸の破壊を確実にするために、「Dying」というステートを作り、それを「die」ステートからの遷移矢印につなぎます。

次に、Destroy SelfアクションブラウザーからDyingステートに追加します。

このアクションは、弾丸を完全にシーンから削除します。

Detach Childrenはチェックを入れないままにし、bulletが破壊されるとTeddyGrenadeアセットがくっついたままになりbulletとともに削除されます。

Dyingステートを作成

Dyingステートを作成

プレハブ化する

bulletをmyPrefabsフォルダにドラッグしてそれをプレハブにします。

bulletをプレハブ化

bulletをプレハブ化

ここで、gunController_RゲームオブジェクトのFSM内のSpawning Bulletステートに戻ります。

新しいbulletプレハブを前回の記事でunfinishedのままにしていたCreate ObjectアクションのGame Objectフィールドの中にドラッグします。

小さな赤い警告マークが隣に出るはずですので、見つけやすいと思います。

bulletをCreate Objectにドラッグ

bulletをCreate Objectにドラッグ

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

bulletを削除

bulletを削除

弾丸の設定は以上です。

次回は、敵の数を管理するEnemy Counterと敵を生成する Spawnerの設定方法をご紹介します。

サンプルScene

サンプルゲームはSTYLY GALLERYから体験できます。