simple_move.script
function init(self)
self.center = vmath.vector3(360, 360, 0) -- <1>
self.radius = 160 -- <2>
self.speed = 2 -- <3>
self.t = 0 -- <4>
end
function update(self, dt)
self.t = self.t + dt -- <5>
local dx = math.sin(self.t * self.speed) * self.radius -- <6>
local dy = math.cos(self.t * self.speed) * self.radius
local pos = vmath.vector3() -- <7>
pos.x = self.center.x + dx -- <8>
pos.y = self.center.y + dy
go.set_position(pos) -- <9>
end
--[[
1. Store the center of rotation in the script instance (available through `self`).
2. Store the movement radius.
3. Store the movement speed.
4. Store the elapsed time, in seconds.
5. Increase the elapsed time with `dt`, the delta time elapsed since last call to `update()`.
6. Compute offsets along the X and Y axis. We're using `sinus` and `cosinus` of the current time, scaled with `self.speed`, which will plot points along a circle with radius `self.radius`.
7. Create a new `vector3` which will contain the computed position.
8. Set the `x` and `y` components of the vector to the rotation center plus offsets along X and Y axis.
9. Set the computed position 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