Поверните игрока с помощью сенсорной панели libgdx в направлении движения

у меня эта проблема уже более 2 дней. Постоянно дорабатываю. Я просто не могу это сделать.

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

Пока у меня это:

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. Ничто не принесло мне желаемого эффекта.


person MarvinJ    schedule 19.05.2016    source источник


Ответы (1)


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

Vector2 v = new Vector2(touchpad.getKnobPercentX(), touchpad.getKnobPercentY());
float angle = v.angle();
runningFrame.setRotation(angle);
person Barodapride    schedule 19.05.2016
comment
Спасибо вам так так так так много! Окончательно. Такая простая вещь. ! - person MarvinJ; 20.05.2016
comment
Работает отлично, за исключением того, что в моем случае спрайт возвращается к исходному углу, когда тачпад отпускается. Есть ли способ сохранить его угол после этого? - person mikebrsv; 26.06.2016
comment
Решено! Завернуто runningFrame.setRotation(angle); в оператор if (touchpad.isTouched()). - person mikebrsv; 26.06.2016