Shake Detector Lua

April 16, 2019 ยท View on GitHub

It is porting of shake.js library to Lua.

The module is designed to be compatible with any Lua engine that can get delta-time between update cycles and accelerometer data.

Example of usage with Love2d (free 2d Game Engine):

main.lua

function love.load()
    shakeDetector = require "shakeDetector"
    local joysticks = love.joystick.getJoysticks()
    joystick = joysticks[#joysticks]    
end

function love.update(dt)    
    local x, y, z = joystick:getAxes()
    shakeDetector:update(dt, x, y, z)
end

function love.draw()
    love.graphics.print(shakeDetector.count)
end

API

Update shake detector

update(dt, x, y, z) arguments: delta-time between update cycles, accelerometer data x-axis, y-axis, z-axis

Get shakes count

local shakesCount = shakeDetector.count

Changing threshold and timeout:

shakeDetector:reset()         -- reset to defaults (threshold = 0.5, timeout = 0.25)
shakeDetector:reset(0.6, 0.3) -- set threshold to 0.6 and timeout to 0.3
shakeDetector:reset(nil, 0.4) -- set threshold to default (0.5) and timeout to 0.4
shakeDetector:reset(0.2, nil) -- set threshold to 0.2 and timeout to default (0.25)