Wow, that’s pretty darn broken. I messed around with this for a bit and read the original bug-report threads. I think the only “solution” right now is to set the quaternion rotation every frame yourself. For example this works:
local z = 0
function update(self, dt)
z = z + dt * 3
go.set(".", "rotation", vmath.quat_rotation_z(z))
end
I couldn’t get anything useful working with go.animate()
. I gather from Ragnar’s post that it doesn’t interpolate quaternions properly?
Interestingly, if you set euler.z on init() it will be correct, even with greater than 360-degree positive or negative values. But if you do the same exact thing at runtime with a value that’s on the “wrong” side of the circle, it will alternate sides each time you set it.