--Character controller. Renders point particle. local love = love local step = assert( step ) local state local FRICTION = 0.005 local MAXSPEED = 1.0 local t, x, y, dx, dy, ddx, ddy local function Update() t = love.timer.getTime() dx = (1.0 - FRICTION) * dx + FRICTION * ddx dy = (1.0 - FRICTION) * dy + FRICTION * ddy x = x + dx * step * MAXSPEED y = y + dy * step * MAXSPEED end local function OnKey() ddx = (love.keyboard.isScancodeDown( "d" ) and 1.0 or 0.0) - (love.keyboard.isScancodeDown( "a" ) and 1.0 or 0.0) ddy = (love.keyboard.isScancodeDown( "s" ) and 1.0 or 0.0) - (love.keyboard.isScancodeDown( "w" ) and 1.0 or 0.0) local n = math.sqrt( ddx * ddx + ddy * ddy ) if n < 0.001 then return end ddx, ddy = ddx / n, ddy / n end local function Draw() local dt = love.timer.getTime() - t local rx, ry = x + dt * dx, y + dt * dy love.graphics.setColor( 0.0, 0.0, 0.0, 0.8 ) love.graphics.circle( "fill", rx, ry, 10 ) end local function Impact( impact ) end local function Reset() t = love.timer.getTime() x = 0 y = 0 dx = 0 dy = 0 ddx = 0 ddy = 0 end Reset() return { Update = Update, OnKey = OnKey, Draw = Draw, Impact = Impact, Reset = Reset, }