IEnumerator             shoot(Transform t, Entity.Target target, int layer)
    {
        for (int i = 0; i < raffaleSize; i++)
        {
            Vector2 pos;

            switch (target)
            {
            case Entity.Target.Mouse:
                pos = Camera.main.ScreenToWorldPoint((Vector2)Input.mousePosition);
                break;

            case Entity.Target.Player:
                pos = player.transform.position;
                break;
            }

            if (!t || !bullet || !controller)
            {
                break;
            }
            GameObject b = GameObject.Instantiate(bullet, controller.transform.position, Quaternion.Euler(t.eulerAngles.x, t.eulerAngles.y, t.eulerAngles.z - 90)) as GameObject;
            b.layer = layer;
            b.GetComponent <Rigidbody2D>().AddForce((pos - (Vector2)t.position).normalized * bulletSpeed);
            if (layer != LayerMask.NameToLayer("enemyBullet"))
            {
                ammoNumber--;
            }
            if (ammoNumber == 0)
            {
                break;
            }
            yield return(new WaitForSeconds(raffaleRate));
        }
    }
Example #2
0
 public void fireWeapon(Transform t, Entity.Target target)
 {
     if (GetComponent <Enemy>())
     {
         weapon.fire(t, target, LayerMask.NameToLayer("enemyBullet"));
     }
     else
     {
         weapon.fire(t, target, LayerMask.NameToLayer("playerBullet"));
     }
 }
 public void fire(Transform t, Entity.Target target, int layer)
 {
     if (ammoNumber <= 0)
     {
         gameManager.playDryFire();
         return;
     }
     if (!canShoot)
     {
         return;
     }
     canShoot = false;
     StartCoroutine(shoot(t, target, layer));
     StartCoroutine(weaponCanShoot());
 }