Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function love.load()
- px = 400
- py = 300
- angle, target = false, 0
- speed = .5
- a = 0
- love.graphics.setPointSize(4)
- end
- function love.update(dt)
- local x, y = love.mouse.getPosition()
- --If left mouse is down, stop tracking angle
- local trackangle = not love.mouse.isDown(1)
- target = math.atan2(y-py, x-px)
- target = -target
- if target < 0 then
- target = math.pi*2 +target
- end
- if target <= 0 then target = 0 end --Negative 0 is *still* a problem, what the heck
- if angle then
- if trackangle then
- a = 0
- if target > angle then
- if target-angle <= math.pi then
- angle = angle + round(target-angle)*dt*speed
- else
- angle = angle - round(math.pi*2-(target-angle))*dt*speed
- end
- else
- if angle-target <= math.pi then
- angle = angle - round(angle-target)*dt*speed
- else
- angle = angle + round(math.pi*2-(angle-target))*dt*speed
- end
- end
- if angle < 0 then angle = angle + math.pi*2 end
- if angle >= math.pi*2 then angle = angle - math.pi*2 end
- end
- else
- angle = target
- end
- end
- function love.draw()
- local x, y = love.mouse.getPosition()
- love.graphics.setColor(0, 0, 255, 255)
- love.graphics.line(px, py, x, y)
- love.graphics.setColor(0, 255, 0, 255)
- love.graphics.points(px, py, x, y)
- love.graphics.setColor(255, 0, 0, 255)
- love.graphics.line(px, py, px+math.cos(angle)*20, py-math.sin(angle)*20)
- love.graphics.setColor(255, 255, 255, 255)
- love.graphics.print("Target = " .. round(math.deg(target)), 5, 5)
- love.graphics.print("Angle = " .. round(math.deg(angle)), 5, 25)
- love.graphics.print("Speed = " .. speed, 5, 45)
- end
- function love.wheelmoved(x, y)
- if y > 0 then
- if speed < 1 then
- speed = speed+.25
- else
- speed = math.min(10, speed+1)
- end
- else
- if speed > 1 then
- speed = speed-1
- else
- speed = math.max(.25, speed-.25)
- end
- end
- end
- function distance(x1, y1, x2, y2)
- return math.sqrt((x1-x2)^2 + (y1-y2)^2)
- end
- function round(n, d)
- local d = d or 2
- return math.floor(n*10^d)/10^d
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement