В настоящее время я работаю над 2D-игрой и хочу, чтобы игрок мог свободно перемещаться по миру и всегда "смотреть / смотреть" на мышь.Чтобы реализовать это, я сделал камеру, которая переводит все относительно игрока:
x = (player.getX()+(player.getWidth()/2)) - game.getWidth()/2;
y = (player.getY()+(player.getHeight()/2)) - game.getHeight()/2;
g2d.translate(-camX, -camY);
//render everything(including player)
g2d.translate(camX, camY);
, затем при рендеринге игрока я вычисляю вращение:
g2d.rotate(Math.atan2(playerCenterY - mouseY, playerCenterX - mouseX) - Math.PI / 2 , playerCenterX , playerCenterY );
//draw player
g2d.rotate(-Math.atan2(playerCenterY - mouseY, playerCenterX - mouseX) - Math.PI / 2 , playerCenterX , playerCenterY );
Это работает отлично, но как толькоигрок переместился (заставив камеру двигаться), он больше не работает, и я понятия не имею, почему.Любые мысли будут с благодарностью.