I see the Guns:newBullet() function takes a dx and dy parameter:

`function Guns:newBullet(x,y,image,speed,damage,rotation,dx,dy)`

I'm thinking it would be much simpler to instead not use dx or dy, and calculate the bullet's dx and dy during the update using its speed and rotation. I actually had to do some testing to figure out the right formula for movement, but this should work:

`function Guns:newBullet(x,y,image,speed,damage,rotation)`

local bullet = {}

bullet.x = x

bullet.y = y

bullet.image = image

bullet.speed = speed

bullet.rotation = rotation

bullet.damage = damage

table.insert(Guns.bullets,bullet)

end

function Guns:update(dt)

for i=#Guns.bullets, 1, -1 do

local bullet = Guns.bullets[i]

--Move the bullet

bullet.x = bullet.x - math.sin(-bullet.rotation) * bullet.speed * dt

bullet.y = bullet.y - math.cos(-bullet.rotation) * bullet.speed * dt

end

end