2013-08-05 3 views
0

Просто глядя на некоторые советы/помощи о том, как реализовать следующее:CoronaSDK вращения спрайта плавно

У меня есть путь, который я поставил, используя путевые точки, когда противник достигает Точку он двигается к следующему один. Я задал угол следующего спрайта, чтобы играть в свойствах для путевой точки, но мне нужно, чтобы он плавно поворачивался. Мои спрайты отображаются на каждых 22,5 градусах до 360 градусов, а некоторые из них поворачиваются на 90 градусов. Таким образом, спрайт может воспроизводить последовательность на 45 градусов, и она достигает точки, где следующая последовательность для воспроизведения может быть спрайтом 135 градусов. Итак, как я могу заставить это стать красивым и гладким, а не прыгать с 45 до 135?

ответ

1

Вместо того, чтобы напрямую устанавливать вращение объекта, попробуйте установить целевое вращение, а затем интерполируйте его.

Например:

--Sprite is currently rotated 45 degrees, I now want it to change to 135 degrees 
mySprite.targetRotation = 135 

Теперь в функции enterFrame (если у вас еще нет, то вам нужно будет добавить один):

local function Update(event) 

local turnSpeed = 0.5 
mySprite.rotation = mySprite.rotation + turnSpeed * (mySprite.targetRotation - mySprite.rotation) 

end 

Переменная turnSpeed ​​должна быть от 0,0001 до 1 в зависимости от того, как быстро вы хотите, чтобы они повернулись (0.0001 будет означать, что он вращается очень медленно, 1 будет мгновенным).

Учитывая, что вы предположительно имеете более одного из этих спрайтов, вам нужно будет поместить их в таблицу и применить этот расчет ко всем объектам в этой таблице.