2016-05-19 6 views
0

У меня эта проблема сейчас более 2 дней. Постоянная настройка. Я просто не могу это сделать.Поверните плеер с помощью сенсорной панели libgdx в направлении движения

У меня есть текстура игрока (игрок смотрит на нее слева), которую я хочу повернуть с помощью сенсорной панели. Таким образом, игрок столкнется с его бегущим направлением.

До сих пор у меня есть это:

double facerotation = Math.atan2(touchpad.getKnobPercentY(), touchpad.getKnobPercentX()); 

spriteBatch.draw(runningFrame, player.getPosition().x, player.getPosition().y, Player.getSize()/2, Player.getSize()/2, Player.getSize(), Player.getSize(), 1, 1, facerotation * 100, false); 

Но с «roation * 100» он вращается, как 2 раза вокруг и без него едва поворачивается. Я даже попытался переключить значения X и Y для функции atan2 выше. Но я никогда не заставлял его вращаться только в направлении движения. Я также попробовал функцию atan, также с заменой значений X и Y.

Пожалуйста, помогите мне. Я пробовал тысячи способов, разные расчеты и все, что я видел в google. Ничто не принесло мне желаемого эффекта.

ответ

1

Просто используйте Vector2. Используйте его для хранения ваших процентов и y. Затем вы можете получить поворот в градусах с помощью vector2.angle().

Vector2 v = new Vector2(touchpad.getKnobPercentX(), touchpad.getKnobPercentY()); 
float angle = v.angle(); 
runningFrame.setRotation(angle); 
+1

Спасибо, что так так! В заключение. Такая простая вещь. ! – MarvinJ

+0

Отлично работает, за исключением того, что в моем случае спрайт возвращается в исходный угол при отпускании сенсорной панели. Есть ли способ сохранить свой угол после этого? – mikebrsv

+0

Решенный! Обернуто 'runningFrame.setRotation (angle);' в '' if (touchpad.isTouched()) 'statement. – mikebrsv