Euler.z switch

Hi,

I have a script that rotates my colorwheel and spinner according to the direction value:

function rotate()
	local speed = 1.0
	local colorwheel = msg.url("colorwheel")
	local spinner = msg.url("spinner")
	--local direction = 0

	go.cancel_animations(colorwheel, "euler.z")
	go.cancel_animations(spinner, "euler.z")
	
	if direction == 0
	then
		direction = 1
		go.set(colorwheel, "euler.z", 0)
		go.set(spinner, "euler.z", 0)
		go.animate(colorwheel, "euler.z", go.PLAYBACK_LOOP_FORWARD, 360,go.EASING_LINEAR, speed)
		go.animate(spinner, "euler.z", go.PLAYBACK_LOOP_FORWARD, -360,go.EASING_LINEAR, speed)
	else
		direction = 0
		go.set(colorwheel, "euler.z", 0)
		go.set(spinner, "euler.z", 0)
		go.animate(colorwheel, "euler.z", go.PLAYBACK_LOOP_FORWARD, -360,go.EASING_LINEAR, speed)
		go.animate(spinner, "euler.z", go.PLAYBACK_LOOP_FORWARD, 360,go.EASING_LINEAR, speed)
	end	
end

How can you set the euler.z of the gameobject to the current angle instead of starting at 0 everytime I call the rotate() function?

There’s:

local z = go.get(url, "euler.z")
1 Like

I have the following but it seems like whenever the 360 degree is complete it sets the euler.z = to the value set in colorwheel_euler and spinner_euler.

	local colorwheel_euler = go.get(colorwheel, "euler.z")
	local spinner_euler = go.get(spinner, "euler.z")

	go.set(colorwheel, "euler.z", colorwheel_euler)
	go.set(spinner, "euler.z", spinner_euler)
	go.animate(colorwheel, "euler.z", go.PLAYBACK_LOOP_FORWARD, 360,go.EASING_LINEAR, speed)
	go.animate(spinner, "euler.z", go.PLAYBACK_LOOP_FORWARD, -360,go.EASING_LINEAR, speed)

go.animate() will leave the value it is animating at its final value. It will not reset it when the animation is finished. There must be something else going on in your code.

1 Like