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 に答える