Измените угол 3 спрайтов и сделайте так, чтобы он выглядел гладким / реалистичным - PullRequest
0 голосов
/ 25 октября 2011

У меня есть 3 спрайта, у всех один и тот же угол, так что я просто собираюсь сказать, спрайт руки.Угол спрайта руки в данный момент равен одной точке1 (60, 60, но это не имеет значения) другой точке2, точке, где нажал большой палец игрока.

Во время функции ccTime я обновляю все,углы и прочее.Поэтому всякий раз, когда пользователь касается точки на экране, угол немедленно изменяется, и угол наклона руки равен вектору от точки 1 до точки 2.

Я не хочу, чтобы изменение угла занимало 0,016 секунды, чтобызавершено (ccTime вызывается каждые 1/60 секунды).Я хочу, чтобы угол увеличивался / уменьшался быстрее / медленнее в зависимости от того, как далеко новый вектор находится от текущего вектора.По сути, я хочу, чтобы рука поднималась / опускалась с определенной скоростью, возможно, немного ускорялась, в зависимости от вектора.

Я много раз пытался заставить ее работать, но я никуда не добираюсь.Пожалуйста, помогите мне, вращение может идти от 90 градусов прямо до почти 180 градусов прямо вниз (однако углы в cocos2d изменены, поэтому мне пришлось добавить 90 здесь и там).

Если вам нужна дополнительная информация, просто оставьте комментарий, и я дам вам информацию как можно скорее.

1 Ответ

0 голосов
/ 25 октября 2011

Вы должны установить новый угол как destinationAngle, а затем в цикле обновления:

//Instead of checking for equality, you might want to check the angle is close enough, e.g. if they are withing 1 degree of each other e.g.(if (abs(destinationAngle - angle) < 1)
if (angle != destinationAngle)
{
    //move towards destination
    angle += ((destinationAngle - angle) / 10.0f);
}
...