159 lines
3.9 KiB
Lua
159 lines
3.9 KiB
Lua
-- Load some default values for our agent.
|
|
local r, g, b = love.math.colorFromBytes(132, 193, 238)
|
|
love.graphics.setBackgroundColor(r, g, b)
|
|
local timer = 0
|
|
local int = math.ceil(timer)
|
|
|
|
collider = require 'libs/collider'
|
|
|
|
|
|
function love.load()
|
|
local dbgcol = {1,1,1}
|
|
-- THE RIGHT ONE WILL
|
|
|
|
|
|
|
|
-- collision thing
|
|
wall = {x = 100, y = 100, width = 50, height = 50}
|
|
wall.sprite = love.graphics.newImage('sprites/white.png')
|
|
-- If you installed transform.lua
|
|
local transform = require 'libs/transform'
|
|
|
|
|
|
anim8 = require 'libs/anim8'
|
|
love.graphics.setDefaultFilter("nearest", "nearest")
|
|
checker = 0
|
|
agent = {}
|
|
agent.vx = 0
|
|
agent.vy = 0
|
|
agent.x = 0
|
|
agent.y = 0
|
|
agent.speed = 300
|
|
agent.spriteSheet = love.graphics.newImage('sprites/spritesheet3.png')
|
|
agent.grid = anim8.newGrid( 64, 64, agent.spriteSheet:getWidth(), agent.spriteSheet:getHeight() )
|
|
agent.animations = {}
|
|
agent.animations.right = anim8.newAnimation( agent.grid('1-3', 1),0.15)
|
|
agent.animations.left = anim8.newAnimation( agent.grid('1-3', 2),0.15)
|
|
agent.jumped = love.graphics.newImage('sprites/agent_jump.png')
|
|
agent.width = 64
|
|
agent.height = 64
|
|
|
|
agent.anim = agent.animations.right
|
|
|
|
isMouseDown = false
|
|
mouseX, mouseY = 0, 0
|
|
end
|
|
|
|
function love.update(dt)
|
|
|
|
collider.update()
|
|
|
|
t = 0 -- counter thing
|
|
timer = timer + dt
|
|
local distance
|
|
local isMoving = false
|
|
if love.keyboard.isDown("right") then
|
|
agent.anim = agent.animations.right
|
|
agent.x = agent.x + 2
|
|
isMoving = true
|
|
end
|
|
|
|
if love.keyboard.isDown("left") then
|
|
isMoving = true
|
|
agent.x = agent.x - 2
|
|
agent.anim = agent.animations.left
|
|
end
|
|
|
|
agent.anim:update(dt)
|
|
|
|
if isMoving == false then
|
|
agent.anim:gotoFrame(1)
|
|
|
|
end
|
|
|
|
agent.x = agent.x + agent.vx * dt
|
|
agent.y = agent.y + agent.vy * dt
|
|
|
|
if love.mouse.isDown(1) then
|
|
isMouseDown = true
|
|
mouseX, mouseY = love.mouse.getPosition()
|
|
else
|
|
|
|
if isMouseDown then
|
|
local dx = mouseX - agent.x
|
|
local dy = mouseY - agent.y
|
|
local distance = math.sqrt(dx * dx + dy * dy)
|
|
|
|
agent.vx = (dx / distance) * agent.speed
|
|
agent.vy = (dy / distance) * agent.speed
|
|
end
|
|
isMouseDown = false
|
|
end
|
|
|
|
|
|
local damping = 0.98
|
|
local stopThreshold = 10
|
|
|
|
agent.x = agent.x + agent.vx * dt
|
|
agent.y = agent.y + agent.vy * dt
|
|
|
|
|
|
agent.vx = agent.vx * damping
|
|
agent.vy = agent.vy * damping
|
|
|
|
|
|
if math.abs(agent.vx) < stopThreshold and math.abs(agent.vy) < stopThreshold then
|
|
agent.vx = 0
|
|
agent.vy = 0
|
|
end
|
|
|
|
if checkCollision(agent, wall) then
|
|
t = 0 + 1
|
|
end
|
|
-- collision checker thingy
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Draw a coloured rectangle.
|
|
function love.draw()
|
|
-- In versions prior to 11.0, color component values are (0, 102, 102)
|
|
love.graphics.print(agent.x, 10, 210)
|
|
love.graphics.print(int, 350, 0)
|
|
agent.anim:draw(agent.spriteSheet, agent.x, agent.y, nil, 1)
|
|
love.graphics.rectangle("fill", wall.x, wall.y, wall.width, wall.height)
|
|
love.graphics.print(t)
|
|
|
|
|
|
if isMouseDown then
|
|
drawDottedArc(agent.x, agent.y, mouseX, mouseY)
|
|
love.graphics.draw(agent.jumped, agent.x, agent.y, nil, 1)
|
|
end
|
|
collider.draw()
|
|
end
|
|
|
|
function drawDottedArc(x1, y1, x2, y2)
|
|
local numDots = 20
|
|
local distance = math.sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)
|
|
|
|
for i = 1, numDots do
|
|
local t = i / numDots
|
|
local cx = x1 + (x2 - x1) * t
|
|
local cy = y1 + (y2 - y1) * t
|
|
love.graphics.circle("fill", cx, cy, 2)
|
|
end
|
|
end
|
|
|
|
|
|
-- thanks google
|
|
function checkCollision(obj1, obj2)
|
|
return obj1.x < obj2.x + obj2.width and
|
|
obj1.x + obj1.width > obj2.x and
|
|
obj1.y < obj2.y + obj2.height and
|
|
obj1.y + obj1.height > obj2.y
|
|
end
|
|
-- THE ACTUAL THING!!!
|