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); } }
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; } } }
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); } } }
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; } } }
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); } } }
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; } } }
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); } } }
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; } } }
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); } } } }