После хорошего ночного сна я просто проснулся с решением! Функция cam.angle (angle), очевидно, устанавливает угол в соответствии с тем, что вы хотите (в градусах), но вы должны делать это только один раз, а не в петле обновления, иначе камера начнет вращаться. Это очевидно, но я просто не понял.
другая проблема заключается в том, что тело имеет 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 (кулачок) заключается в следующем:
public float getCameraCurrentXYAngle(OrthographicCamera cam)
{
return (float)Math.atan2(cam.up.x, cam.up.y)*MathUtils.radiansToDegrees;
}
И теперь в использовании этого, чтобы обновить вашу камеру к вращению проигрывателя:
camera.rotate((camAngle-playerAngle)+180);
Я надеюсь, что это помогает человеку, который upvoted мой вопрос;)
Приветствия и иметь продуктивный день! Jonas