【Unity/Playmaker】銃コントローラーに弾丸を設定する

本記事では、Unity内でPlayMakerを使って主観シューティングゲームを作り、それをSTYLYエディタにエクスポートすることを目的とします。 1〜7まで続いてますので、セットで確認することでより流れが理解できると思います。今回は、前回制作した銃コントローラに弾丸の設定をする方法をご紹介します。  

[6] 弾丸の設定

空のGame ObjectをScene Hierarchy内に作り、「Bullet」と名前をつけます。RainbowCrossbowのように、Scene Editorで視覚的に弾丸プレハブを作成し、プレハブを適切なコントローラFSMに挿入する前に微調整します。   FPL_ISBITのWeapons Packフォルダ内の3Dセクションの下にある「Teddy Grenade」アセットを見つけて、弾丸オブジェクトにドラッグして子にします。Scene Editorの画面に次のように表示されます。   bulletFinishedはチュートリアルを作成するための参照用として階層内に表示されていることに注意してください。ご自身のScene HierarchyでplaymakerGameFinishedでは見つかりません。 クマが中心を外れている場合は、InspectorのTransformコンポーネントの下にある歯車のアイコンをクリックして、「リセット」を選択してください。次に、弾丸を選択し、InspectorウィンドウでAdd Compnentを選択し、次にCapsule Colliderを検索します。見つかったら、クリックしてこのコンポーネントを弾丸に追加します。   Colliderの形を編集して、おおまかにクマを包みます。 Edit Colliderをクリックし、クリック&ドラッグ編集を有効にするか、直接半径と高さを変更してColliderを操作します。   また、弾丸にRigid Bodyを与えて、ゲーム世界の物理学が適用されるようにしてください。弾丸が飛んでいく時に落ちて現実世界のようになるようUse Gravityがチェックされているか確認してください。   TeddyGrenadeにもcolliderを作成しますが、弾丸に設置したcolliderよりも少し大きくしてください。これはTeddyGrenadeのcolliderが敵との接触で特定のアクションをトリガーするトリガーになるためですが、トリガーはアセットが床などの他のオブジェクトと衝突するのを防ぎます。 したがって、弾丸の実際のcolliderよりも大きいトリガー領域が必要で、銃弾が跳ね返る前に衝突する際に敵のモデルとトリガー領域が重なり合います。銃弾には適切なcolliderが必要で、敵や床から跳ね返えらせるものであってはなりません。   TeddyGrenadeのcolliderをトリガーにするために、Inspector内のTeddyGrenadeのcolliderプロパティスクリーンのIs Triggerボックスにチェックを入れます。   bulletゲームオブジェクトをクリックし、Moving Forwardと呼ばれるステートを作ります。   このScene Hierarchy内にあるように、アセット名の右横にある赤い四角いロゴはFSMがそれらにくっついていることを意味します。 Moving Forwardステート内にAddForceアクションを作り、Z方向の値に4000としforceを設定します。他の方向軸はそのままにしておきます。銃弾を打ちたいときにクマの弾丸が10から直接飛んで行ってくれるようになります。 ここではワールドのZ方向ではなく銃弾の方向がcrossbowのメインとなる軸から直接向いている方向ですからSpaceをSelfに設定し、Z方向がゲーム世界自体ではなく、銃弾に紐付いていることを確認してください。   ここで「die」と呼ばれるイベントを作成し、Moving Forwardステートへの遷移として追加します。 次に、ステートにWaitアクションを追加し、対応するボックスにチェックを入れてリアルタイムで20秒に設定します。 finishイベントも「die」に設定してください。 これにより、弾丸が20秒後に破壊されるdieステートに入ります。これは画面が弾丸によっていっぱいになり、時間の経過とともにゲームが大きく遅れることになることを避ける上で必要です。   弾丸の破壊を確実にするために、「Dying」というステートを作り、それを「die」ステートからの遷移矢印につなぎます。 次に、Destroy SelfアクションブラウザーからDyingステートに追加します。 このアクションは、弾丸を完全にシーンから削除します。Detach Childrenはチェックを入れないままにし、bulletが破壊されるとTeddyGrenadeアセットがくっついたままになりbulletとともに削除されます。   bulletをmyPrefabsフォルダにドラッグしてそれをプレハブにします。   gunController_RゲームオブジェクトのFSM内のSpawning Bulletステートに戻り、新しいbulletプレハブを少し前にunfinishedのままにしていたCreate ObjectアクションのGame Objectフィールドの中にドラッグします。小さな赤い警告マークが隣に出るはずですので、見つけやすいと思います。   もうUnity Scene Editor上で編集する必要がないため、Scene Hierarchyから弾丸のプレハブを削除します。   弾丸の設定は以上です。次は、PlayMakerの利用 -3-でEnemy Counter & Spawnerの設定をご紹介します。 [関連記事] ・PlayMakerの利用 -1-PlayMakerの利用 -2-PlayMakerの利用 -4-PlayMakerの利用 -5-PlayMakerの利用 -6-PlayMakerの利用 -7-