CoronaSDK 旋转的 3D 精灵。

我正在制作一款塔防游戏,其中有一个精灵在渲染时呈现出类似于3D的角度。我有一个问题,无法解决。

图片

我需要平滑地旋转精灵,使其面向正在开火的敌人。目前,它会获取炮塔和敌人之间的角度,并将精灵设置为该角度,因此如果角度为140度,则播放140度的开火序列。问题在于它会直接跳到该角度,因此如果炮塔上次开火的位置为270度,下一个敌人位置为120度,则它会直接跳到该角度。

有什么办法可以在塔开始开火之前,每隔5度旋转一次炮塔,以在上次播放的序列和下一个角度的序列之间进行?所以,如果上次的播放是270度,我需要去到140度,那么我将播放265,260,255 ... ... 150,145,140的帧。

点赞
用户1847592
用户1847592
current_angle = 270

-- 当出现新目标时
local target_angle = 140
local delta = (target_angle - current_angle + 180) % 360 - 180
-- 现在:-180 <= delta < 180
step = delta < 0 and -5 or 5
number_of_steps = delta / step
ready_to_fire = false

-- 在 "draw" 函数中
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
   -- 给“current_angle”绘制帧
end
2013-03-23 19:34:48