CoronaSDK旋转3d精灵

时间:2013-03-23 19:09:11

标签: lua corona

我正在制作塔防游戏,我有一个精灵,它在渲染的角度有点3D。我有一个问题,我无法弄清楚如何解决。

Image

我需要平滑地旋转精灵来面对它射击的敌人。此刻它获得了炮塔和敌人之间的角度并设置了该角度的精灵,所以如果角度为140度,我将播放140度的射击序列。这个问题是它会直接跳到那个角度,所以如果炮塔发射的最后一个位置是270度而下一个敌人是120度,它将直接跳到那个角度。

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

1 个答案:

答案 0 :(得分: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