前回の作業でひとまず自機が動くようになったので、次は自機が発射する弾を作っていきます。
弾のゲームオブジェクトの作り方
まず、必要なコンポーネントをアタッチして弾のゲームオブジェクトを作ります。最初にインポートしてもらった画像素材のうち「Bullet」を選んでシーンにドラッグ&ドロップし、
- Box Collider 2D
- Rigidbody2D
をそれぞれアタッチしてください。このうちコライダーの方はスプライトの大きさに合わせてサイズを調整してくれるので設定は不要ですが、リジッドボディのほうは少しだけ設定が必要です。下の図のように「Constraints」の「回転を固定」にチェックを入れておきましょう。
弾を動かすためのC#スクリプト
そうしたら次は弾を動かすためのC#スクリプトを書いていきます。適当なフォルダに新しいC#スクリプトを作り、次のコードを書いてください。
using UnityEngine; public class BulletController : MonoBehaviour { [SerializeField] Rigidbody2D rigidBody = null; [SerializeField] float speed = 15; void Start() { rigidBody.velocity = transform.up * speed; } void OnCollisionEnter2D(Collision2D collision) { // Enemyタグをもつゲームオブジェクト(=隕石)に当たったら消滅 if (collision.gameObject.CompareTag("Enemy")) { Destroy(gameObject); } } void OnBecameInvisible() { // カメラに映らなくなったら消滅 Destroy(gameObject); } }
とても簡単なスクリプトなので解説は不要だと思います。書けたらこれを先ほど作った弾のゲームオブジェクトにアタッチして、弾をプレハブ化してください。
これで弾のプレハブができたので、前回作ったプレイヤーのスクリプト「PlayerController」コンポーネントの「Bullet Prefab」欄にこの弾のプレハブを登録しておきましょう。
テストプレイして弾の動きを確認しよう
ではテストプレイして弾の動作を確認してみましょう。下のGIFのようにマウスの左ボタンを押している間弾が発射されれば成功です。
次のページ→シューティングゲームの敵キャラ(隕石)の作り方