我正在制作塔防游戏,我有一个精灵,它在渲染的角度有点3D。我有一个问题,我无法弄清楚如何解决。
我需要平滑地旋转精灵来面对它射击的敌人。此刻它获得了炮塔和敌人之间的角度并设置了该角度的精灵,所以如果角度为140度,我将播放140度的射击序列。这个问题是它会直接跳到那个角度,所以如果炮塔发射的最后一个位置是270度而下一个敌人是120度,它将直接跳到那个角度。
在塔开始射击之前,我是如何在最后一次播放的序列和下一个角度的序列之间每隔5度旋转炮塔的想法?所以最后一次播放是270我需要去140所以我会播放帧265,260,255 ....... 150,145,140
答案 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