Included a texture rotation method that worked for me
(Added a simpler rotateTexture() function) |
(Included a texture rotation method that worked for me) |
||
| Line 177: | Line 177: | ||
self:SetTexCoord((sin - cos), -(cos + sin), -cos, -sin, sin, -cos, 0, 0) | self:SetTexCoord((sin - cos), -(cos + sin), -cos, -sin, sin, -cos, 0, 0) | ||
end | end | ||
==Simple Rotation of Textures about their Own Center== | |||
It may just have been a lack of understanding on my part but the above methods did not work for me; Or at least did not meet my needs. | |||
To be explicit, I wanted to be able to rotate a texture about its own center. | |||
In other words, I wanted the texture to spin in place, and not rotate or move the texture about the center of the UI, or its parent's center. | |||
The following code gives a rough idea of how to animate a texture to make it spin. | |||
But the basic method can be seen in the :SetTexCoord method : | |||
local angleInc = 0.25 | |||
function myOnUpdate(self, elapsed) | |||
self.timer = self.timer + elapsed; | |||
if ( self.timer > 0.05 ) then | |||
self.hAngle = self.hAngle - angleInc; | |||
self.s = sin(self.hAngle); | |||
self.c = cos(self.hAngle); | |||
miniNote:SetTexCoord( 0.5-self.s, 0.5+self.c, | |||
0.5+self.c, 0.5+self.s, | |||
0.5-self.c, 0.5-self.s, | |||
0.5+self.s, 0.5-self.c); | |||
self.timer = 0; | |||
end | |||
end | |||
angleInc has been precalculated as a Radians value - the larger it is, the faster the spin. | |||
Or reduce the self.timer threshold to make a smoother rotation. | |||
radians = (pi/180) * degrees | |||