Exemple #1
0
    IEnumerator BehaveB(float x, float arrivalY, float t, GameObject originalShot, float awayAcceleration, float awaySpeedLimit, float awayAngle)
    {
        transform.position = new Vector3(x, StgFrame.topS + BodyRadius);

        Acceleration  = -2 * -(arrivalY - Y) / Mathf.Pow(t, 2);
        Speed         = -Acceleration * t;
        SpeedLimit    = 0;
        Angle         = -90;
        MoveAngleLink = false;

        while (Speed != 0)
        {
            BodyAngle = Angle2Player;

            yield return(null);
        }

        //FireWay(originalShot, 3, 5, StgFrame.height / 2.5f, bodyAngle);
        Fire(originalShot, StgFrame.height / 2.8f, BodyAngle);
        yield return(Yielder.WaitForFixedSeconds(0.5f));

        MoveAngleLink = true;
        Angle         = awayAngle;
        Acceleration  = StgFrame.height / 3;
        SpeedLimit    = StgFrame.height / 2.5f;
    }
Exemple #2
0
    public IEnumerator Behave008(float x, float arrivalY, GameObject originalShot, float awayAngle = -90f, bool another = false)
    {
        transform.position = new Vector3(x, StgFrame.topS + BodyRadius);
        SetDestAtTime(x, arrivalY, 1);
        yield return(WaitForStop());

        Angle = Angle2Player;
        FireWay(originalShot, 3, 5, StgFrame.height / 1.8f, Angle);
        yield return(Yielder.WaitForFixedSeconds(0.5f));

        if (another)
        {
            yield return(Yielder.WaitForFixedSeconds(0.5f));
        }

        Acceleration = StgFrame.height / 2f;
        SpeedLimit   = StgFrame.height / 1f;
        Angle        = awayAngle;

        if (another)
        {
            for (var i = 0; i < 3; i++)
            {
                yield return(Yielder.WaitForFixedSeconds(0.3f));

                FireRoundWay(originalShot, 6, 2, 3f, StgFrame.height / 2.8f, Mathfd.RandomAngle());
            }
        }
    }
Exemple #3
0
    IEnumerator BehaveA(float advance, GameObject originalShot, float awayAngle)
    {
        SetMovement(StgFrame.height / 1.2f, -90);

        {
            var _adv = 0f;

            while (_adv < advance)
            {
                yield return(null);

                _adv += Speed;
            }
        }

        Acceleration = -Speed / 0.5f;
        while (Speed != 0)
        {
            yield return(null);
        }

        FireWay(originalShot, 3, 5, StgFrame.height / 2.5f, -90);
        yield return(Yielder.WaitForFixedSeconds(0.5f));

        Angle        = awayAngle;
        Acceleration = StgFrame.height / 3;
        SpeedLimit   = StgFrame.height / 2.5f;
    }
Exemple #4
0
    public IEnumerator Behave009(float x, float arrivalY, float sX, float t, GameObject originalShot)
    {
        transform.position = new Vector3(x, StgFrame.topS + BodyRadius);
        SetDestAtTime(this.X, arrivalY, t);

        {
            var curT = 0f;
            while (Speed != 0)
            {
                yield return(null);

                curT  += TimeManager.DeltaTime;
                this.X = x + sX / 2 + sX / 2 * Mathfd.Cos(-180f + 180f * curT / t);
            }
        }

        for (var i = 0; i < 3; i++)
        {
            Fire(originalShot, StgFrame.height / 1.8f, -90f);
            yield return(Yielder.WaitForFixedSeconds(0.25f));
        }

        Acceleration = StgFrame.height / 4;
        SpeedLimit   = StgFrame.height / 1;
    }
Exemple #5
0
 public IEnumerator Behave101(GameObject originalShot)
 {
     while (true)
     {
         FireRoundR210(originalShot, 5, Random.Range(0, StgFrame.halfWidth / 3), Mathfd.RandomAngle(), StgFrame.halfWidth / 40, StgFrame.height / 2, Mathfd.RandomAngle(), -StgFrame.height / 1, StgFrame.height / 2.5f);
         yield return(Yielder.WaitForFixedSeconds(0.2f));
     }
 }
Exemple #6
0
    /// <summary>
    /// ドバーッ
    /// </summary>
    /// <param name="originalEnemy"></param>
    /// <param name="x"></param>
    /// <param name="firstSpeed"></param>
    /// <param name="intervalSpeed"></param>
    /// <param name="angle"></param>
    /// <param name="fireTime"></param>
    /// <param name="originalShot"></param>
    /// <param name="n"></param>
    /// <param name="createIntervalTime"></param>
    /// <returns></returns>
    public static IEnumerator CreateFormation003(GameObject originalEnemy, float x, float firstSpeed, float intervalSpeed, float angle, float fireTime, GameObject originalShot, int n, float createIntervalTime)
    {
        for (var i = 0; i < n; i++)
        {
            CreateBehave003Enemy(originalEnemy, x, firstSpeed - intervalSpeed * i, angle, fireTime, originalShot);

            yield return(Yielder.WaitForFixedSeconds(createIntervalTime));
        }
    }
Exemple #7
0
 /// <summary>
 /// 横に並ぶ奴
 /// </summary>
 /// <param name="original"></param>
 /// <param name="n"></param>
 /// <param name="firstX"></param>
 /// <param name="intervalX"></param>
 /// <param name="arrivalY"></param>
 /// <param name="firstT"></param>
 /// <param name="intervalT"></param>
 /// <param name="originalShot"></param>
 /// <param name="awayAcceleration"></param>
 /// <param name="awaySpeedLimit"></param>
 /// <param name="awayAngle"></param>
 /// <returns></returns>
 public static IEnumerator CreateFormationB(GameObject original, int n, float firstX, float intervalX, float arrivalY, float firstT, float intervalT, GameObject originalShot, float awayAcceleration, float awaySpeedLimit, float awayAngle)
 {
     for (var i = 0; i < n; i++)
     {
         StgAct clone = StgAct.ApparentInstantiate(original);
         clone.StartCoroutine(clone.BehaveB(firstX + intervalX * i, arrivalY, firstT - intervalT * i, originalShot, awayAcceleration, awaySpeedLimit, awayAngle));
         yield return(Yielder.WaitForFixedSeconds(intervalT));
     }
 }
Exemple #8
0
    public IEnumerator Behave003(float x, float speed, float angle, float fireTime, GameObject originalShot)
    {
        transform.position = new Vector3(x, StgFrame.topS + BodyRadius);
        this.Speed         = speed;
        this.Angle         = angle;

        yield return(Yielder.WaitForFixedSeconds(fireTime));

        FireRound(originalShot, 5, StgFrame.height / 1.8f, Angle2Player);
    }
Exemple #9
0
 public IEnumerator FireBehave002(GameObject original, int roundN, int lineN, float speed, float lineIntervalT, int roundCount)
 {
     for (var i = 0; i < roundCount; i++)
     {
         float angle = Mathfd.RandomAngle();
         for (var j = 0; j < lineN; j++)
         {
             FireRound(original, roundN, speed, angle);
             yield return(Yielder.WaitForFixedSeconds(lineIntervalT));
         }
     }
 }
Exemple #10
0
    public IEnumerator Behave007(Vector2 position, float angle, GameObject originalShot)
    {
        transform.position = position;
        Speed      = StgFrame.height / 2f;
        this.Angle = angle;

        while (true)
        {
            yield return(Yielder.WaitForFixedSeconds(0.06f));

            Fire(originalShot, StgFrame.height / 1.5f, angle + 180f + Mathfd.Shake(30f));
        }
    }
Exemple #11
0
    public IEnumerator Behave001(float x, GameObject originalShot, float awayAngleSpeed)
    {
        transform.position = new Vector3(x, StgFrame.topS + BodyRadius);

        Speed = StgFrame.height / 2.7f;
        Angle = -90f;

        yield return(Yielder.WaitForFixedSeconds(1f));

        FireRound(originalShot, 14, StgFrame.height / 2f, Mathfd.RandomAngle());
        yield return(Yielder.WaitForFixedSeconds(0.4f));

        AngleSpeed = awayAngleSpeed;
    }
Exemple #12
0
    public IEnumerator Behave004(float lr, float y, float arrivalX, float arrivalT, IEnumerator fire, float wait, float awayAcceleration, float awaySpeedLimit, bool lookAtPlayer = true)
    {
        Coroutine lap = null;

        {
            float s;

            if (lr < 0)
            {
                transform.position = new Vector3(StgFrame.leftS - BodyRadius, y);
                s     = arrivalX - X;
                Angle = 0;
            }
            else
            {
                transform.position = new Vector3(StgFrame.rightS + BodyRadius, y);
                s     = X - arrivalX;
                Angle = -180;
            }

            Acceleration = -2 * s / Mathf.Pow(arrivalT, 2);
        }
        Speed      = -Acceleration * arrivalT;
        SpeedLimit = 0;

        while (Speed != 0)
        {
            yield return(null);
        }

        if (lookAtPlayer)
        {
            lap = StartCoroutine(LookAtPlayer());
        }

        yield return(fire);

        yield return(Yielder.WaitForFixedSeconds(wait));

        if (lookAtPlayer)
        {
            StopCoroutine(lap);
        }

        Angle         = BodyAngle;
        MoveAngleLink = true;
        Acceleration  = awayAcceleration;
        SpeedLimit    = awaySpeedLimit;
    }
Exemple #13
0
    public IEnumerator Behave002(float x, GameObject originalShot)
    {
        transform.position = new Vector3(x, StgFrame.topS + BodyRadius);
        Speed = StgFrame.height / 2.2f;
        Angle = -90;

        yield return(Yielder.WaitForFixedSeconds(0.5f));

        MoveAngleLink = false;
        StartCoroutine(BodyRoll(370f));
        while (true)
        {
            yield return(Yielder.WaitForFixedSeconds(0.12f));

            FireWay(originalShot, 3, 1.2f, StgFrame.height / 3, BodyAngle);
        }
    }
Exemple #14
0
    public IEnumerator Behave201(GameObject originalShot, float lr = 1, bool another = false)
    {
        float lAngle   = Mathfd.RandomAngle();
        var   sAngle   = 0f;
        var   num      = 4;
        var   t        = 1f;
        var   interval = t / 40;

        if (another)
        {
            sAngle = 360 / num / 2;
        }

        for (var i = 0; i < 30; i++)
        {
            FireRoundR2102Player(originalShot, num, StgFrame.halfWidth * 0.45f, lAngle, StgFrame.halfWidth * 0.05f, StgFrame.height / 10, sAngle, StgFrame.height / 0.8f, StgFrame.height / 1.5f);
            yield return(Yielder.WaitForFixedSeconds(interval));

            lAngle += 11 * lr;
            sAngle -= 360 / num / 3 * lr;
        }
    }
Exemple #15
0
    // ボス1号挙動
    public IEnumerator Behave100Enemy(GameObject originalShot)
    {
        var enemy = GetComponent <Enemy>();

        transform.position = new Vector3(StgFrame.PX(0), StgFrame.topS + BodyRadius);
        SetDestAtTime(new Vector2(X, StgFrame.PY(0.6f)), 1f);
        yield return(WaitForStop());

        MoveAngleLink = false;

        StartCoroutine(Behave101(originalShot));

        while (true)
        {
            for (var lr = -1; lr <= 1; lr += 2)
            {
                SetDestAtTime(StgFrame.PX(Random.Range(0.4f, 0.7f) * lr), StgFrame.PY(Random.Range(0.4f, 0.7f)), 2.5f);

                if (enemy.GetHPP() < 0.5f)
                {
                    yield return(Yielder.WaitForFixedSeconds(1f));

                    for (var lr2 = -1; lr2 <= 1; lr2 += 2)
                    {
                        CreateBehave007Actor(originalShot, transform, Angle2Player + 30f * lr2, originalShot);
                        CreateBehave007Actor(originalShot, transform, Angle2Player + 42f * lr2, originalShot);
                    }
                }

                yield return(WaitForStop());

                CreateBehave007Actor(originalShot, transform, Angle2Player, originalShot);

                yield return(Yielder.WaitForFixedSeconds(0.5f));
            }
        }
    }
Exemple #16
0
    //public IEnumerator Behave010(float lr,float fromY,float toX,float toY,float t,bool another = false)
    //{
    //    transform.position = new Vector3(StgFrame.centerX + (StgFrame.halfWidth + StgFrame.shakeRange + bodyR) * lr, fromY);
    //    SetDestAtTime(toX, toY, t);
    //    //move
    //    while (speed != 0)
    //    {

    //    }
    //}

    public IEnumerator Behave200(GameObject originalShot)
    {
        var enemy = GetComponent <Enemy>();

        transform.position = new Vector3(StgFrame.centerX, StgFrame.topS + BodyRadius);
        SetDestAtTime(X, StgFrame.PY(0.7f), 1);
        yield return(WaitForStop());

        while (enemy.GetHPP() > 0.6f)
        {
            for (var lr = -1; lr <= 1; lr += 2)
            {
                for (var i = 0; i < 3; i++)
                {
                    FireWay(originalShot, 15, 1, StgFrame.height / 2.5f, Angle2Player);
                    yield return(Yielder.WaitForFixedSeconds(0.46f));
                }
                yield return(Behave201(originalShot, lr, true));

                yield return(Yielder.WaitForFixedSeconds(1));

                FireRound(originalShot, 30, StgFrame.height / 3.2f, Mathfd.RandomAngle());
                yield return(Yielder.WaitForFixedSeconds(0.8f));

                yield return(Behave201(originalShot, lr));

                yield return(Behave201(originalShot, -lr, true));

                yield return(Yielder.WaitForFixedSeconds(1));
            }
        }

        while (enemy.GetHPP() > 0f)
        {
            for (var lr = -1; lr <= 1 && enemy.GetHPP() > 0f; lr += 2)
            {
                for (var lr2 = -1; lr2 <= 1; lr2 += 2)
                {
                    SetDestAtTime(StgFrame.PX(Random.Range(0.4f, 0.7f) * lr * lr2), StgFrame.PY(Random.Range(0.7f, 0.8f)), 2);
                    for (var i = 0; i < 6; i++)
                    {
                        yield return(Yielder.WaitForFixedSeconds(0.2f));

                        FireRoundWay(originalShot, 3, 3, 3, StgFrame.height / 2.2f, Mathfd.RandomAngle());
                    }
                    yield return(WaitForStop());

                    SetDestAtTime(X, StgFrame.PY(-0.8f), 0.7f);
                    yield return(WaitForStop());

                    for (var i = 0; i < 2; i++)
                    {
                        CreateBehave007Actor(originalShot, transform, 90 + Mathfd.Shake(2), originalShot);
                        yield return(Yielder.WaitForFixedSeconds(0.5f));
                    }
                }

                SetDestAtTime(StgFrame.centerX, StgFrame.centerY, 3);
                yield return(WaitForStop());

                Angle = -90;

                {
                    float speed    = StgFrame.height * 0.8f;
                    float interval = 1.4f;
                    for (var i = 0; i < 20; i++)
                    {
                        for (var j = 0; j < 8; j++)
                        {
                            Fire(originalShot, Random.Range(speed, speed * 0.6f), Angle2Player + Mathfd.Shake(4));
                        }
                        yield return(Yielder.WaitForFixedSeconds(interval));

                        speed    = Mathf.Min(StgFrame.height * 1.4f, speed + StgFrame.height * 0.2f);
                        interval = Mathf.Max(0.2f, interval - 0.3f);
                    }
                }
                yield return(Yielder.WaitForFixedSeconds(1f));
            }
        }
    }
Exemple #17
0
 public IEnumerator Fire2PlayerBehave(GameObject originalShot, float speed)
 {
     Fire(originalShot, speed, Angle2Player);
     yield return(Yielder.WaitForFixedSeconds(0f));
 }