[Unity] 弾丸の連射はPrefabを使う

Unityで弾を発射したい場合に、弾丸のオブジェクトをあらかじめ大量作っておくのでしょうか? 確かに現実世界ではそうなりますが、Unityでは再利用可能なPrefabを使います
 
簡単にGameObjectからたくさんの弾丸が発射されるような例を作ってみます
 
shoot_04

Unity 2018.1

 




Prefab

 
prefabとはご存知のプレハブ住宅で言うところのプレハブです。
fabricate の「製造、制作」にpreと言う前置詞がついて、事前に作成したものを指す訳です。プレハブ住宅のようにあらかじめ作っておいて、たくさん量産するのですね。納得…
 
Cubeを土台としてCapsuleを銃身に、弾をSphereで作って行きます。
 
prefab_02
 
 

 

Cubeで土台作り

 
Gunの土台を作ります。「GameObject」「3D Object」「Cube」からCubeを作成して、位置を [0, 0, 0]  Scaleを [2, 2, 2] 辺りに調整します。
 
prefab_03

 

銃身としてのCapsule

 
銃身に見立てたCapsuleを設置、z方向に1.5ずらします。
 
prefab_04

 

MuzzleはEmptyのGameObject

 
Muzzle、銃口を想定しています。これは弾丸が発射される位置を特定するためにGameObjectの「Create Empty」で作った空のオブジェクトで、Capsuleの中に位置を設定します。
 
prefab_05

 

弾丸:bullet

 
bullet、弾丸。Prefabで丸を作るための雛型でSphereで作成します。Scaleは 0.5,0.5,0.5 と設定、後で削除しますので場所は適当です。
 
Sphereの名前をbulletに変えて「Component」「Physics」から「Rigidbody」を設定。Use Gravityはここではチェックを外します。
 prefab_06
 
Main Cameraを調整して弾丸の飛び出すのがわかるようにします。
 
prefab_07
 
SceneのCamera Previewで位置やローテーションを合わせます。
 
prefab_08

 

Prefab 作成

 
prefabの作り方は色々あるようですが簡単に、HierarchyにあるGameObjectをドラッグ&ドロップでAssetsに置くとPrefabになります。
 
prefab_09

 

Zキーで発射するScript

 
キーボードの「z」を押すと弾丸が発射されるようにコーディングします
 
ProjectのCreateから「C# Script」で
Shooting.cs を作ります

 
これをCubeにドラッグ&ドロップ
 
prefab_10
 
Inspector にShooting (Script)が追加されます。
 
prefab_11b
 
Shooting (Script) には
Bullet
Muzzle
がそれぞれNoneになっているので、HierarchyのMuzzleと
Assetsのbullet.prefabをドラッグ&ドロップします。
 
prefab_12
 
Hierarchyのbulletはいりませんので消去します。
 
これでGameシーンに切り替えて
「Z」キーを押すと弾丸が発射されます。
 
shoot_04
 
 
Reference:
プレハブ – Unity マニュアル