Я делаю 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 );
Вот некоторые изображения, где выделенная стрелка - это место, где находится мышь. (сторона куба должна быть обращена к мошу, а не к углу)
Вот как это должно выглядеть (до того, как камера начнет двигаться):
это то, на что это похоже, когда id больше не работает (после того, как камера перевела: