2013-03-23 2 views
0

Я делаю игру защиты башни, и у меня есть спрайт, который является видом 3D в угол, который он визуализировал. У меня проблема, я не могу понять, как ее решить.CoronaSDK rotating 3d sprite

Image

мне нужно повернуть спрайт плавно к лицу с врагом он стреляет в. В данный момент он получает угол между башней и противником и устанавливает спрайт для этого угла, поэтому, если бы угол составлял 140 градусов, я бы играл на 140-градусной стрельбе. Проблема с этим заключается в том, что он будет прыгать прямо к этому углу, поэтому, если последнее место, которое выстрелила башня, было на 270 градусов, а следующий враг на 120 градусов, он будет прыгать прямо к этому углу.

Любые идеи, как я могу вращать башню каждые 5 градусов между последней воспроизводимой последовательностью и последовательностью следующего угла перед тем, как башня начнет стрелять? Так что в последний раз было 270, мне нужно перейти на 140, чтобы я играл в рамки для 265, 260, 255 ....... 150, 145, 140

ответ

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