public override void Update(GameTime gameTime) { base.Update(gameTime); if (IsInScreen() && LifeWall.AllIsDead()) { fallTimer.Update(gameTime); GameOverEffect(); } }
public override void Update(GameTime gameTime) { mapBottomHit = false; gunTimer.Update(gameTime); if (!IsCharging && Position.Y < -GameDevice.Instance().DisplayModify.Y) { if (!IsMenu) { sound.PlaySE("wall_hit"); } Position = new Vector2(Position.X, -GameDevice.Instance().DisplayModify.Y + 1); var rotation = Rotation; Rotation = 180 - rotation; new DestroyParticle(HitParticle, Position, new Point(16, 16), DestroyParticle.DestroyOption.Down); } IsCharging = false; Velocity = Front * Speed; Speed -= Deceleration; if (Speed < 0) { Speed = 0; } if (Input.GetKeyTrigger(Keys.Space) && !IsTitle) { Speed = 0; if (!IsMenu) { sound.StoppedSE("shoot", 0); sound.RemoveSE("shoot", 0); sound.CreateSEInstance("charge"); sound.CreateSEInstance("charging"); sound.PlaySEInstances("charge", 0); haveSound = true; } } if (Input.GetKeyRelease(Keys.Space) && !IsTitle && !IsMenu) { sound.StoppedSE("charge", 0); sound.RemoveSE("charge", 0); sound.StoppedSE("charging", 0); sound.RemoveSE("charging", 0); haveSound = false; if (Speed > MaxSpeed / 2) { sound.CreateSEInstance("shoot"); sound.PlaySEInstances("shoot", 0); } } if (Input.GetKeyState(Keys.Space) && !IsTitle) { if (haveSound) { if (sound.IsStoppedSEInstance("charge", 0)) { sound.PlaySEInstances("charging", 0, true); } } Velocity = Vector2.Zero; Rotation += RotaionSpeed; Speed += ChargeSpeed; if (Speed > MaxSpeed) { Speed = MaxSpeed; } IsCharging = true; } BladeRotation -= (Speed - MaxSpeed / 2) * 2; //if (Speed <= MaxSpeed / 2 && gunTimer.Location >= (BulletRate + Speed / (MaxSpeed / 2) / (1 + BulletRate))) if (!Velocity.Equals(Vector2.Zero) && Speed <= MaxSpeed / 2 && gunTimer.Location >= BulletRate && !IsMenu) { gunTimer.Reset(); //GameObjectManager.Instance.Add(new PlayerBullet(Position + Size.ToVector2() / 2 - new Vector2(8, 8 + Math.Sign(Front.Y) * Size.Y / 2), -Math.Sign(Front.Y))); GameObjectManager.Instance.Add(new PlayerBullet(Position + Size.ToVector2() / 2 - new Vector2(8, 8 + Size.Y / 2), -1)); sound.PlaySE("gun"); } if (!IsTitle && !IsMenu) { if (LifeWall.AllIsDead()) { new DestroyParticle(Name, Position, Size, DestroyParticle.DestroyOption.Center); sound.StoppedSE("charge", 0); sound.StoppedSE("charging", 0); IsDead = true; } } new TailParticle(Position + new Vector2(16, 16)); base.Update(gameTime); if (Position.X < Block.BlockSize) { HitWall(true); } else if (Position.X > Screen.Width - Block.BlockSize - Size.X) { HitWall(false); } }
public void Update(GameTime gameTime) { if (!fade.IsEnd) { fade.Update(gameTime); } if (bossAlert.Initialized) { bossAlert.Update(gameTime); } hitStop.Update(gameTime); if (hitStop.isHitStop) { return; } #if DEBUG if (Input.GetKeyTrigger(Keys.Enter)) { //シーン移動 isEndFlag = true; next = Scene.Ending; } #endif if (gameObjectManager.Map.CheckAllBlockDead()) { //シーン移動 isEndFlag = true; next = Scene.GameOver; } if (!LifeWall.AllIsDead() && !ScrollStop) { scroll--; } if (scroll < Screen.Height) { scroll = Screen.Height; } if (Menu.GetDifficulty() == Menu.Difficulty.tutorial && !ScrollStop) { foreach (var height in stopHeights) { if (scroll == height) { ScrollStop = true; } } } else if (ScrollStop) { if (gameObjectManager.Find <Enemy>().FindIndex(enemy => enemy.IsInScreen()) == -1) { ScrollStop = false; var blocks = gameObjectManager.Map.GetAllBlockInScreen(); foreach (var block in blocks) { if (block.IsSolid) { GameDevice.Instance().GetSound().PlaySE("success"); gameObjectManager.Map.ReplaceBlock(block, new Space()); } } } } GameDevice.Instance().DisplayModify = new Vector2(0, -scroll + Screen.Height); gameObjectManager.Update(gameTime); particleManager.Update(gameTime); if (gameObjectManager.Find <Boss>().Count == 0) { isEndFlag = true; next = Scene.Ending; } if (Menu.GetDifficulty() == Menu.Difficulty.tutorial) { next = Scene.Title; } if (scroll == BossAlert.AlertHeight && Menu.GetDifficulty() != Menu.Difficulty.tutorial) { if (!bossAlert.Initialized) { bossAlert.Initialize(); } bossAlert.Update(gameTime); } }