Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

51 рядки
1.4 KiB

  1. enemy = Class{}
  2. G = 6.67e-5
  3. function enemy:init(x, y, del, tm, atm)
  4. self.x = x
  5. self.y = y
  6. self.image = love.graphics.newImage("entities/enemy/enemy.png")
  7. self.cannon = love.graphics.newImage("entities/enemy/cannon.png")
  8. self.w = self.image:getWidth()
  9. self.h = self.image:getHeight()
  10. self.cannonw = self.cannon:getWidth()
  11. self.cannonh = self.cannon:getHeight()
  12. self.angle = 0
  13. self.deletable = del
  14. self.maxtimer = tm
  15. self.destX = x
  16. self.otimer = tm
  17. self.timer = tm
  18. self.color = {1,1,1,1}
  19. self.appeared = false
  20. self.appeartimer = atm
  21. end
  22. function enemy:update(dt)
  23. self.timer = self.timer - dt
  24. if self.timer <= 0 then
  25. self.timer = self.maxtimer
  26. self:shoot()
  27. end
  28. local distanceToShip = math.sqrt((firstShip.x - self.x)^2 + (firstShip.y - self.y)^2)
  29. self.angle = math.atan( (firstShip.y - self.y)/ (firstShip.x - self.x))
  30. if self.x < firstShip.x then
  31. self.angle = self.angle - 3.14159
  32. end
  33. end
  34. function enemy:time(dt)
  35. self.appeartimer = self.appeartimer - dt
  36. end
  37. function enemy:draw()
  38. love.graphics.setColor(unpack(self.color))
  39. love.graphics.draw(self.image, self.x, self.y, 0, 1, 1, self.w/2, self.w/2)
  40. love.graphics.draw(self.cannon, self.x, self.y, self.angle-1.57, 1, 1, self.cannonw/2, self.cannonh/2)
  41. end
  42. function enemy:shoot()
  43. table.insert(projectiles, projectile(self.x, self.y, 0.5, self.angle+3.14, 5))
  44. sounds["launch"]:stop()
  45. sounds["launch"]:play()
  46. end