YKpages

ロボット分野で勉強したことのまとめ

Unity ゲーム開発日記:弾を発射

はじめに

今回はプレイヤーから弾を発射します

その前に

以下のようなプレイヤーの画像を作成しました

f:id:kato_robotics:20181103194947p:plain

ゲーム画面ではこんな感じです(まだ全然ロケットぽくない)

f:id:kato_robotics:20181103195154p:plain

弾のオブジェクトを作成

まず空のオブジェクトを作成して名前を「PlayerBullet」とします

この空のオブジェクトにはスクリプトなどは一切アタッチしません(後で付けます)

次に 2D Sprite を作成して名前を「Bullet」とします

そして「Bullet」を「PlayerBullet」の子にします

  • 親:PlayerBullet(空のオブジェクト)
  • 子:Bullet(2D Sprite)

オブジェクトを親子関係にすると、子のオブジェクトは親のオブジェクトの座標系に従います

これにより「Bullet」の動きを簡単に書くことができます

Bullet.cs を書く

    void Start () 
    {
        GetComponent<Rigidbody>().velocity = transform.up.normalized * bulletSpeed;
    }

このコードでは上方向へ速度を与えます

先ほど書いたとおり、「Bullet」は「PlayerBullet」の座標系に従います

以下のコードのように「PlayerBullet」をPlayerの姿勢に合わせてインスタンス化すれば「Bullet」はPlayerが向いている方向へ発射されます

    IEnumerator Start()
    {
        while(isShoot)
        {
            // 弾をプレイヤーと同じ姿勢でインスタンス化
            Instantiate(playerBullet, transform.position, transform.rotation);
            // 0.3待つ
            yield return new WaitForSeconds(0.3f);
        }
    }

弾を撃っているときのゲーム画面はこのようになりました(Playerがどれか分かりづらいですね)

f:id:kato_robotics:20181103210125p:plain

おわりに

今回はPlayerから弾を発射しました

次は敵を作成したいと思います