2016-08-16 3 views
1

После поворота камеры координаты меня смутили.Libgdx Координаты после поворота вокруг камеры

У меня есть камера персонажа и карта. Этот игрок ходит только в направлениях: север (90 °), юг (270 °), восток (0 °), запад (180 °).

Before rotation

После поворота камеры с позиции игрока «camera.rotateAround (..., ..., ...)» игрок начинает двигаться в новых направлениях в результате вращения ,

After rotation

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

  • Примечание: Карта дорожек является временной, тогда есть эти свободно склеенные края.

Я ценю помощь.

ответ

1

Сначала вам нужно сохранить угол поворота карты. Затем, когда игрок перемещается, вам необходимо учесть угол поворота карты.

camera.rotatearound(...)//I guess you rotating +90 or -90 in this game 
maprotation+=... //+90 or -90 depends on side you turn. 
//i ll assume rotation direction is counter clock wise. 

Теперь вы знаете поворот, чтобы вы могли настроить движение игрока с помощью тригонометрии.

in player.moveup (float maprotation) метод или везде, где бы вы написали коды для перехода на север.

x+=MathUtils.cosDeg(90-maprotation)*speed;//90 degree for moving up 
y+=MathUtils.sinDeg(90-maprotation)*speed;// - maprotation for correction 

enter image description here

Как вы можете видеть, когда камера вращающейся также направление вращения. Таким образом, вам просто нужно вычитать поворот карты для исправления.

enter image description here

+0

Thank you mr. Дениз – Lovera

+0

Добро пожаловать :) –

+0

Привет, Дениз, я изучаю тригонометрию, как вы упомянули. Тем не менее, у меня была другая проблема. Не могли бы вы мне помочь, пожалуйста. http://stackoverflow.com/questions/39028834/libgdx-fixed-point-after-camera-rotatearound – Lovera

Смежные вопросы