Code: Select all
elseif love.keyboard.isDown('up') and player.yvel > -player.speed then
player.yvel = player.yvel - player.speed * dt
if player.animstate == player.walkanim_right or player.animstate == player.standanim_right then
player.animstate = player.walkanim_right
Code: Select all
player = {}
function player.load()
-- world coordinates
player.x, player.y = 50, 100
-- movement velocity and friction
player.xvel, player.yvel = 0, 0
player.friction = 6
player.speed = 1000
-- animations from player spritesheet
player.spritesheet = love.graphics.newImage("cook.png")
local g = anim8.newGrid(80, 128, player.spritesheet:getWidth(), player.spritesheet:getHeight())
player.walkanim_left = anim8.newAnimation(g('1-4', 1), 0.1)
player.standanim_left = anim8.newAnimation(g('1-4', 2), 0.1)
player.walkanim_right = player.walkanim_left:clone():flipH()
player.standanim_right = player.standanim_left:clone():flipH()
-- set current animation
player.animstate = player.standanim_right
end
function player.draw()
player.animstate:draw(player.spritesheet, player.x, player.y)
end
function player.physics(dt)
player.x = player.x + player.xvel * dt
player.y = player.y + player.yvel * dt
player.xvel = player.xvel * (1 - math.min(player.friction * dt, 1))
player.yvel = player.yvel * (1 - math.min(player.friction * dt, 1))
end
function player.move(dt)
if love.keyboard.isDown('right') and player.xvel < player.speed then
player.xvel = player.xvel + player.speed * dt
player.animstate = player.walkanim_right
elseif love.keyboard.isDown('left') and player.xvel > -player.speed then
player.xvel = player.xvel - player.speed * dt
player.animstate = player.walkanim_left
elseif love.keyboard.isDown('down') and player.yvel < player.speed then
player.yvel = player.yvel + player.speed * dt
if player.animstate == player.walkanim_right or player.animstate == player.standanim_right then
player.animstate = player.walkanim_right
else
player.animstate = player.walkanim_left
end
elseif love.keyboard.isDown('up') and player.yvel > -player.speed then
player.yvel = player.yvel - player.speed * dt
if player.animstate == player.walkanim_right or player.animstate == player.standanim_right then
player.animstate = player.walkanim_right
else
player.animstate = player.walkanim_left
end
else
if player.animstate == player.walkanim_left then player.animstate = player.standanim_left end
if player.animstate == player.walkanim_right then player.animstate = player.standanim_right end
end
end
function player.update(dt)
player.physics(dt)
player.move(dt)
player.animstate:update(dt)
end