/// <summary> /// Метод вывода объекта Ship на экран. /// </summary> public override void Draw() { Game.Buffer.Graphics.DrawImage(Sprite, Pos.X, Pos.Y, Size.Width, Size.Height); // Выводим пул снарядов. BulletPool.Draw(); }
/// <summary> /// Метод изменения состояния объекта Ship. /// </summary> public override void Update() { // Обновляем пул снарядов. BulletPool.Update(); // Устанавливаем направление объекта. SetDirection(); // Перемещаем объект. Pos.X += Dir.X * Game.DeltaTime; Pos.Y += Dir.Y * Game.DeltaTime; // Если объект вышел за границу, то возвращаем обратно. if (Pos.X < -Size.Width * 0.3) { Pos.X = (int)(-Size.Width * 0.3); } if (Pos.X > Game.Width - Size.Width) { Pos.X = Game.Width - Size.Width; } if (Pos.Y < 0) { Pos.Y = 0; } if (Pos.Y > Game.Height - Size.Height) { Pos.Y = Game.Height - Size.Height; } if (KeysHandler.IsPressed(Keys.Space)) { Shoot(); } }
/// <summary> /// Выстрел снарядов. /// </summary> public void Shoot() { if (ShotsDelay < _lastShotCounter) { _lastShotCounter = 0; BulletPool.GetNext(_bulletSpawn + Pos); _shotSound.Play(); } else { _lastShotCounter += Game.DeltaTime; } }