Spinner animation


Setup

spinner

Scripts

spinner.script

function init(self)
    self.t = 0 -- <1>
    self.speed = 16 -- <2>
end

function update(self, dt)
    self.t = self.t + dt -- <3>
    local step = math.floor(self.t * self.speed) -- <4>
    local angle = math.pi / 6 * step -- <5>
    local rot = vmath.quat_rotation_z(-angle) -- <6>
    go.set_rotation(rot) -- <7>
end

--[[
1. Store a timer value (seconds elapsed) in the current script component (accessed through `self`).
2. A speed value. How many rotation steps to perform each second.
3. Increase timer value with the delta time elapsed since last `update()`.
4. Calculate which step to rotate to.
5. Calculate rotation angle (in radians) based on which step to rotate to.
6. Create a rotation quaternion with `angle` rotation around the Z axis.
7. Set the rotation on the current game object.
--]]

If you want to play with these examples, you can get the project on Github.

Do you want to see more examples? Why not write a few yourself and submit a pull request? We love contributions.

GITHUB