Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
    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));
        }
    }