protected void Fire() { fireBank += Time.deltaTime; while (fireBank >= fireRate) { fireBank -= fireRate; DragonFire df = Instantiate(firePrefab, head.transform.position, Quaternion.identity).GetComponent <DragonFire>(); df.transform.eulerAngles = new Vector3(0f, head.transform.eulerAngles.y - 180f, 0f); df.transform.Translate(df.transform.forward * (fireBank + 0.4f), Space.World); } }
IEnumerator ShotFire() { int graduarity = 0; yield return(new WaitForSeconds(interval / 2f)); while (true) { if (graduarity % 2 == 0) { stageController.ShotSE(se); GameObject fire = Instantiate(firePrefab, new Vector3(shotPosT.position.x, shotPosT.position.y, 0), Quaternion.identity); Vector3 shotVec = (player.transform.position - shotPosT.position).normalized; DragonFire df = fire.GetComponent <DragonFire>(); df.Dir = shotVec; df.FireSpeed = fireSpeed; } else if (graduarity == 1) { for (int i = -1; i <= 1; i++) { stageController.ShotSE(se); GameObject fire = Instantiate(firePrefab, new Vector3(shotPosT.position.x, shotPosT.position.y, 0), Quaternion.identity); float rad = (180 + i * 40f) * Mathf.Deg2Rad; Vector3 shotVec = new Vector3(Mathf.Cos(rad), Mathf.Sin(rad), 0); DragonFire df = fire.GetComponent <DragonFire>(); df.Dir = shotVec; df.FireSpeed = fireSpeed; yield return(new WaitForSeconds(0.1f)); } } else if (3 <= graduarity) { for (int i = -2; i <= 2; i++) { stageController.ShotSE(se); GameObject fire = Instantiate(firePrefab, new Vector3(shotPosT.position.x, shotPosT.position.y, 0), Quaternion.identity); float rad = (180 + i * 30f) * Mathf.Deg2Rad; Vector3 shotVec = new Vector3(Mathf.Cos(rad), Mathf.Sin(rad), 0); DragonFire df = fire.GetComponent <DragonFire>(); df.Dir = shotVec; df.FireSpeed = fireSpeed; yield return(new WaitForSeconds(0.1f)); } } graduarity++; if (Dead) { yield break; } yield return(new WaitForSeconds(interval)); } }