---@class Projectile:GameObject ---@field r number ---@field s number|nil ---@field v number|nil local Projectile = GameObject:extend() function Projectile:new(area, x, y, opts) Projectile.super.new(self, area, x, y, opts) -- radius of collider self.s = opts.s or 2.5 -- velocity self.v = opts.v or 200 self.collider = self.area.world:circle(self.x, self.y, self.s) end ---Updates Projectile ---@param dt number delta time function Projectile:update(dt) Projectile.super.update(self, dt) -- update velocity --self.v = math.min(self.v + self.a*dt, self.max_v) -- update position local vx = self.v * math.cos(self.r) -- velocity X local vy = self.v * math.sin(self.r) -- velocity Y self.x = self.x + vx * dt -- update position X self.y = self.y + vy * dt -- update position Y -- move collision area self.collider:moveTo(self.x, self.y) end ---Draws Projectile function Projectile:draw() Projectile.super.draw(self) if DEBUG then love.graphics.setColor(1, 0, 0) self.collider:draw() end love.graphics.setColor(1, 1, 1) love.graphics.circle('fill', self.x, self.y, self.s) end return Projectile