Установка поворота камеры в Libgdx
Я не могу показаться, чтобы найти способ, чтобы связать вращение мою камеру Орто в libGDX (в проекте с Box2D) с вращением Box2D в организме. Существует способа кулачок.вращайте (xy), давая ему импульс или ускорение, но я хотел бы установить определенное значение, что-то вроде
cam.setAngle(player.body.getAngle());
Как бы я это сделал? Должен ли я написать свою собственную функцию? Если да, то как? Я хочу, чтобы вращение камеры всегда было таким же, как у игрока...
Спасибо!
1 ответ:
После хорошего ночного сна я просто проснулся с решением в голове! функциональная камера.угол (угол), очевидно, устанавливает угол на то, что вы хотите (в градусах) - но вы должны сделать это только один раз, а не в цикле обновления, иначе камера просто начнет вращаться. Это очевидно, но я просто не понял.
Другая проблема заключается в том, что тело box2d имеет "бесконечные" степени (я преобразую все в степени с помощью *MathUtils.radiansToDegrees), поэтому мне пришлось ограничить их до 0, чтобы 359:playerAngle = player.body.getAngle()*MathUtils.radiansToDegrees; while(playerAngle<=0){ playerAngle += 360; } while(playerAngle>360){ playerAngle -= 360; }
Градусы камеры идут от -180 до 180, поэтому вы также должны преобразовать их в 0 до 359:
camAngle = -getCameraCurrentXYAngle(camera) + 180;
Функция " getCameraCurrentXYAngle (cam) является следующей:
public float getCameraCurrentXYAngle(OrthographicCamera cam) { return (float)Math.atan2(cam.up.x, cam.up.y)*MathUtils.radiansToDegrees; }
А теперь используйте это, чтобы обновить камеру до вращения вашего плеера:
camera.rotate((camAngle-playerAngle)+180);
Я надеюсь, что это поможет человеку, который отклонил мой вопрос;)
Ура и удачного Вам дня! Джонас