gib.lua 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. local Gib = {}
  2. Gib.name = 'Gib'
  3. Gib.code = 'gib'
  4. Gib.images = {}
  5. function Gib:activate()
  6. self.speed = love.math.random(250, 750)
  7. self.angularVelocity = love.math.random(-400, 400)
  8. self.angle = love.math.random() * math.pi * 2
  9. self.alpha = 1
  10. local i = 1 + love.math.random(6)
  11. self.image = data.media.graphics.effects['gib' .. i]
  12. self.depth = -9
  13. ctx.view:register(self)
  14. end
  15. function Gib:update()
  16. self.angularVelocity = math.lerp(self.angularVelocity, 0, tickRate * 20)
  17. self.angle = self.angle + self.angularVelocity * tickRate
  18. self.speed = self.speed - math.min(1200 * tickRate, self.speed)
  19. self.x = self.x + math.dx(self.speed * tickRate, self.angle)
  20. self.y = self.y + math.dy(self.speed * tickRate, self.angle)
  21. if self.speed == 0 then
  22. self.alpha = self.alpha - tickRate
  23. if self.alpha <= 0 then return true end
  24. end
  25. end
  26. function Gib:draw()
  27. love.graphics.setColor(255, 255, 255, self.alpha * 255)
  28. local w, h = self.image:getWidth(), self.image:getHeight()
  29. love.graphics.draw(self.image, self.x, self.y, self.angle, 1.1, 1.1, w / 2, h / 2)
  30. end
  31. return Gib