Example #1
0
 private void FireBigStar()
 {
     for (int i = 0; i < 6; i++)
     {
         var shootForward = Quaternion.Euler(0, 0, _starAngel + i * 60) * Master.transform.up;
         var moveData     = MoveData.New(Master.transform.position, shootForward, StarSpeed - 2f);
         BulletFactory.CreateBulletAndShoot(BigStarId, Master.transform, Layers.EnemyBullet, moveData);
     }
 }
Example #2
0
    public override void OnFixedUpdate()
    {
        if (!CanShoot)
        {
            return;
        }

        if (Time.time - _lastWaitTIme < 2f)
        {
            return;
        }

        if (_inWait)
        {
            if (Player.Instance)
            {
                _nextShootForward = Player.Instance.transform.position - Master.transform.position;
                _nextShootForward = _nextShootForward.normalized;
            }
            _inWait = false;
        }

        if (!_inWait && GameSystem.FixedFrameCount > _nextShootFrame)
        {
            var f1             = Quaternion.Euler(0, 0, -60f) * _nextShootForward;
            var bulletMoveData = MoveData.New(Master.transform.position, f1, 10f);
            bulletMoveData.HelixToward      = MoveData.EHelixToward.Right;
            bulletMoveData.HelixRefretFrame = 20;
            bulletMoveData.EulurPerFrame    = 6f;

            BulletFactory.CreateBulletAndShoot(1009, Master.transform, Layers.EnemyBullet, bulletMoveData);

            var f2 = Quaternion.Euler(0, 0, 60f) * _nextShootForward;
            var bulletMoveData2 = MoveData.New(Master.transform.position, f2, 10f);
            bulletMoveData2.HelixToward      = MoveData.EHelixToward.Left;
            bulletMoveData2.HelixRefretFrame = 20;
            bulletMoveData2.EulurPerFrame    = 6f;
            BulletFactory.CreateBulletAndShoot(1009, Master.transform, Layers.EnemyBullet, bulletMoveData2);

            _nextShootFrame = GameSystem.FixedFrameCount + 2;

            _shootIdx++;
            //每20发子弹停2秒
            if (_shootIdx % 20 == 0)
            {
                _inWait       = true;
                _lastWaitTIme = Time.time;
            }
        }
    }
Example #3
0
    private void FireBulletRed()
    {
        if (ShootIdx % RedBulletFrame == 0)
        {
            Master.PlayShootSound(EShootSound.Noraml);
            Master.PlayShootEffect(EColor.Red, 2f);

            for (int i = 0; i < RedBulletCount; i++)
            {
                var fwd      = Quaternion.Euler(0, 0, i * (360f / RedBulletCount) + Random.Range(-30f, 30f)) * Master.transform.up;
                var moveData = MoveData.New(Master.transform.position, fwd, RedBulletSpeed, -1, RedBulletSpeed - 2);
                BulletFactory.CreateBulletAndShoot(RedBulletId, Master.transform, Layers.EnemyBullet, moveData);
            }
        }
    }
Example #4
0
    private void FireBulletRed()
    {
        if (ShootIdx % RedBulletFrame == 0)
        {
            var fwd      = Quaternion.Euler(0, 0, _redBulletAngel) * Master.transform.up;
            var shootPos = Master.transform.position + fwd.normalized * 3f;

            Master.PlayShootSound(EShootSound.Noraml);
            Master.PlayShootEffect(EColor.Red, 2f, shootPos);


            //2组子弹,往反方向
            for (int i = 0; i < RedBulletCount; i++)
            {
                var f1       = Quaternion.Euler(0, 0, _redBulletAngel + 120 + i * 5) * Master.transform.up;
                var moveData = MoveData.New(shootPos, f1, RedBulletSpeed - i * 0.1f);
                BulletFactory.CreateBulletAndShoot(RedBulletId, Master.transform, Layers.EnemyBullet, moveData);
            }

            for (int i = 0; i < RedBulletCount; i++)
            {
                var f1       = Quaternion.Euler(0, 0, _redBulletAngel - 120 - i * 5) * Master.transform.up;
                var moveData = MoveData.New(shootPos, f1, RedBulletSpeed - i * 0.1f);
                BulletFactory.CreateBulletAndShoot(RedBulletId, Master.transform, Layers.EnemyBullet, moveData);
            }

            _redShootIndex++;

            if (_redShootIndex % Random.Range(4, 6) == 0)
            {
                _redBulletAngel += 120;
            }
            else
            {
                _redBulletAngel += 60;
            }


            if (_redBulletAngel > 360)
            {
                _redBulletAngel -= 360;
            }
        }
    }
Example #5
0
    private void FireHugeBullet()
    {
        if (ShootIdx >= HugeFrame && ShootIdx % HugeFrame == 0)
        {
            Master.PlayShootSound(EShootSound.Tan01);

            var startAngle = Random.Range(0, 360f);

            for (int i = 0; i < HugeBulletCount; i++)
            {
                var fwd      = Quaternion.Euler(0, 0, startAngle + i * (360f / HugeBulletCount)) * Master.transform.up;
                var moveData = MoveData.New(Master.transform.position, fwd, HugeSlowSpeed, 5f, HugeFastSpeed);

                List <EventData> eventList = new List <EventData>();
                eventList.Add(EventData.NewFrame_ChangeSpeed(48, HugeFastSpeed, -5f, HugeSlowSpeed));
                BulletFactory.CreateBulletAndShoot(HugeBulletId, Master.transform, Layers.EnemyBullet, moveData, eventList);
            }
        }
    }
Example #6
0
    private void FireLaser()
    {
        if (ShootIdx % LaserFrame == 0)
        {
            Master.PlayShootEffect(EColor.Red, 3f);

            var fwd      = Quaternion.Euler(0, 0, _laserAngel) * Master.transform.up;
            var moveData = MoveData.New(Master.transform.position, fwd, LaserFastSpeed);

            List <EventData> eventList = new List <EventData>();
            eventList.Add(EventData.NewFrame_ChangeSpeed(20, LaserSlowSpeed));
            eventList.Add(EventData.NewFrame_ChangeSpeed(48, LaserSlowSpeed, 4, LaserFastSpeed));

            BulletFactory.CreateBulletAndShoot(LaserBulletId, Master.transform, Layers.EnemyBullet, moveData, eventList);

            _laserAngel += Random.Range(45, 75);
            if (_laserAngel > 360)
            {
                _laserAngel -= 360;
            }
        }
    }
Example #7
0
    private void FireRedStar()
    {
        if (_shootedRedStarCount < RedStarCount)
        {
            if (ShootIdx % RedStarFrame == 0)
            {
                _shootedRedStarCount++;
                Master.PlayShootEffect(EColor.BlueLight, 4);
                Master.PlayShootSound(EShootSound.Tan01);

                var z = _starAngel + _shootedRedStarCount * 60;
                if (z > 360)
                {
                    z -= 360;
                }
                z += Random.Range(-30, 30);

                var shootForward = Quaternion.Euler(0, 0, z) * Master.transform.up;
                var moveData     = MoveData.New(Master.transform.position, shootForward, RedStarSpeed);
                BulletFactory.CreateBulletAndShoot(RedStarId, Master.transform, Layers.EnemyBullet, moveData);
            }
        }
    }
Example #8
0
    private void BurstHugeBullet()
    {
        if (ShootIdx % BurstHurgeInterval == 0)
        {
            Master.PlayShootEffect(EColor.Red, 3f);
            Master.PlayShootSound(EShootSound.Tan01);

            for (int i = 0; i < HugeBulletCount; i++)
            {
                var fwd      = Quaternion.Euler(0, 0, _burstHugeAngel + i * (360f / HugeBulletCount)) * Master.transform.up;
                var moveData = MoveData.New(Master.transform.position, fwd, HugeSlowSpeed, 5f, HugeFastSpeed);

                List <EventData> eventList = new List <EventData>();
                eventList.Add(EventData.NewFrame_ChangeSpeed(48, HugeFastSpeed, -5f, HugeSlowSpeed));
                BulletFactory.CreateBulletAndShoot(HugeBulletId, Master.transform, Layers.EnemyBullet, moveData, eventList);
            }
            _burstHugeAngel += 13f;
            if (_burstHugeAngel > 360f)
            {
                _burstHugeAngel -= 360f;
            }
        }
    }
Example #9
0
    private void FireStar(bool bTurnLeft)
    {
        _starAngel += bTurnLeft ? -TurnSpeed : TurnSpeed;

        if (_starAngel > 360)
        {
            _starAngel -= 360;
        }

        //int
        if (ShootIdx % StarFrame == 0)
        {
            Master.PlayShootEffect(EColor.BlueLight, 4);
            Master.PlayShootSound(EShootSound.Tan00);

            for (int i = 0; i < 6; i++)
            {
                int mid = (StarCount + 1) / 2;
                for (int j = 1; j <= StarCount; j++)
                {
                    //从最外面渲染到最里面
                    int   rowCount = Mathf.CeilToInt((StarCount - j) / 2f);
                    float forZ;
                    float speed  = StarSpeed;
                    bool  inSide = false;
                    //mid
                    if (j == StarCount)
                    {
                        forZ = _starAngel + i * 60;
                    }
                    else
                    {
                        var isLeft = j % 2 == 0;
                        if (isLeft)
                        {
                            forZ = _starAngel + i * 60 - rowCount * 1.8f;
                            if (bTurnLeft)
                            {
                                inSide = true;
                            }
                        }
                        else
                        {
                            forZ = _starAngel + i * 60 + rowCount * 1.8f;
                            if (!bTurnLeft)
                            {
                                inSide = true;
                            }
                        }


                        speed = StarSpeed - rowCount * 0.2f - (rowCount - 1) * 0.1f;
                    }


                    var shootForward = Quaternion.Euler(0, 0, forZ) * Master.transform.up;
                    var shootPos     = Master.transform.position;

                    var delayTurnForward = Quaternion.Euler(0, 0, forZ + (bTurnLeft ? 90f : -90f)) * Master.transform.up;
                    var moveData         = MoveData.New(shootPos, shootForward, speed);

                    List <EventData> eventList = new List <EventData>();

                    var t2 = 10 + (mid - rowCount) * 4;
                    var t  = 80 + (mid - rowCount) * 10;
                    if (inSide)
                    {
                        eventList.Add(EventData.NewFrame_ChangeSpeed(t2, speed, -5f, 2f));
                        eventList.Add(EventData.NewFrame_ChangeForward(t, delayTurnForward));
                        eventList.Add(EventData.NewFrame_ChangeSpeed(t, -1, 3f, speed + 3f));
                    }

                    BulletFactory.CreateBulletAndShoot(MiniStartId, Master.transform, Layers.EnemyBullet, moveData, eventList);
                }
            }
        }
    }