Unity ゲーム開発日記:弾を発射
はじめに
今回はプレイヤーから弾を発射します
その前に
以下のようなプレイヤーの画像を作成しました
ゲーム画面ではこんな感じです(まだ全然ロケットぽくない)
弾のオブジェクトを作成
まず空のオブジェクトを作成して名前を「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がどれか分かりづらいですね)
おわりに
今回はPlayerから弾を発射しました
次は敵を作成したいと思います