import "CoreLibs/math" local velocity = {x=0,y=0} local lerpmnt = 0.5 local grav = 0.2 local exists = false local active = false local gfx = playdate.graphics local imgRocket = gfx.image.new("gfx/rocket") assert(imgRocket) local sprRocket = gfx.sprite.new(imgRocket) sprRocket:setCollideRect(7, 7, 14, 14) local startpos = {x=0,y=0} function addPlayer(_x,_y) exists = true active = false velocity = {x=0,y=0} startpos = {x= _x,y=_y} sprRocket:moveTo(_x,_y) sprRocket:add() end function killPlayer() exists = false active = false sprRocket:remove() gfx.setDrawOffset(0,0) end local function die() active = false velocity = {x=0,y=0} sprRocket:moveTo(startpos.x, startpos.y) end function updatePlayer() if active == true then if playdate.buttonIsPressed(playdate.kButtonUp) then velocity.x = velocity.x + math.sin(math.rad(playdate.getCrankPosition())) /2 velocity.y = velocity.y - math.cos(math.rad(playdate.getCrankPosition())) /2 end sprRocket:moveBy(velocity.x,velocity.y) local cx, cy = gfx.getDrawOffset() gfx.setDrawOffset(playdate.math.lerp(cx,(-sprRocket.x + 200), lerpmnt), playdate.math.lerp(cy,(-sprRocket.y + 120), lerpmnt)) sprRocket:setRotation(0) sprRocket:update() --print(#sprRocket:overlappingSprites()) velocity.y += grav if #sprRocket:overlappingSprites() > 0 then die() end elseif exists == true then if playdate.buttonIsPressed(playdate.kButtonUp) then active = true end local cx, cy = gfx.getDrawOffset() gfx.setDrawOffset(playdate.math.lerp(cx,(-sprRocket.x + 200), lerpmnt), playdate.math.lerp(cy,(-sprRocket.y + 120), lerpmnt)) end sprRocket:setRotation(playdate.getCrankPosition()) end