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