negitamago
5/15/2018 - 1:26 PM

PlayerShooter

// Playerが弾を撃つ(Space Shooter Tutorialの改変) // 解説記事 http://negi-lab.blog.jp/PlayerShooter

using UnityEngine;

// Playerが弾を撃つ(Space Shooter Tutorialの改変)
// 解説記事 http://negi-lab.blog.jp/PlayerShooter
public class PlayerShooter : MonoBehaviour
{
    public GameObject shot;             // 弾のゲームオブジェクト(Prefab)
    public Transform[] shotSpawns;      // 発射位置のTransform(複数指定可能)
    public float fireRate;              // 射撃間隔(連射の時間間隔)

    private float nextFire = 0f;
    provate AudioSource aud;

    private void Start ()
        => aud = GetComponent<AudioSource> (); // AudioSourceをキャッシュしておく

    private void Update ()
        => Shoot ();

    private void Shoot ()
    {
        // Fire1 ボタンを押していて、射撃間隔を満たしたら
        if ( Input.GetButton ( "Fire1" ) && Time.time > nextFire )
        {
            nextFire = Time.time + fireRate;

            // すべての発射位置から弾を撃つ
            foreach ( var shotSpawn in shotSpawns )
            {
                // それぞれの発射位置の座標と回転を参照して弾を生成する
                Instantiate ( shot, shotSpawn.position, shotSpawn.rotation );
            }

            aud.Play ();    // 射撃音の再生
        }
    }
}