0

我正在制作一个塔防游戏,我有一个精灵,它在渲染的角度上是 3D 的。我有一个问题,我不知道如何解决。

图片

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

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

4

1 回答 1

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
于 2013-03-23T19:34:48.130 回答