我正在制作一个塔防御游戏,我有一个精灵,这是一种3D的角度,它已经被渲染。我有一个问题,我想不出该怎么解决。

我需要平滑地旋转精灵来面对它正在射击的敌人。现在它得到了炮塔和敌人之间的角度,并设置了这个角度的精灵,所以如果角度是140度,我会播放140度的射击序列。这样做的问题是它会直接跳到那个角度,所以如果上一个炮塔发射的角度是270度,下一个敌人在120度,它就会直接跳到那个角度。
你知道我如何在塔开始发射之前,在最后一次播放的序列和下一个角度的序列之间每5度旋转一次炮塔吗?所以最后一次播放是270,我需要转到140,这样我就可以播放265,260,255帧……150,145,140
发布于 2013-03-24 03:34:48
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"
endhttps://stackoverflow.com/questions/15590929
复制相似问题