2013-03-23 165 views
0

我正在做一个塔防游戏,我有一个3D角色它已经呈现的精灵。我有一个问题,我无法弄清楚如何解决。CoronaSDK旋转3d精灵

Image

我需要以平稳地旋转精灵去面对它在在激发敌人。目前它获得了炮塔与敌人之间的角度,并为该角度设置了精灵,所以如果角度为140度,我会玩140度射击。问题在于它会直接跳到这个角度,所以如果最后一个炮塔发射的角度是270度而下一个敌人的角度是120度,它将直接跳到那个角度。

任何想法如何我可以旋转炮塔每5度之间的最后播放序列和下一个角度的序列之前塔开始射击?所以最后玩的是270我需要去140,所以我会玩的帧为265,260,255 ....... 150,145,140

回答

1
current_angle = 270 

-- when new target appears 
local target_angle = 140 
local delta = (target_angle - current_angle + 180) % 360 - 180 
-- Now: -180 <= delta < 180 
step = delta < 0 and -5 or 5 
number_of_steps = delta/step 
ready_to_fire = false 

-- inside "draw" function 
ready_to_fire = number_of_steps == 0 
if not ready_to_fire then 
    current_angle = (current_angle + step) % 360 
    number_of_steps = number_of_steps - 1 
    -- draw frame for "current_angle" 
end