图形2d转换和旋转的麻烦

时间:2018-05-17 22:43:15

标签: java rotation translation graphics2d affinetransform

我正在制作一款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 );   

这里有一些图像,突出显示的箭头是鼠标所在的位置。 (立方体的一侧应朝向mosue,而不是角落)

它应该是这样的(在相机移动之前):

https://i.stack.imgur.com/UQI6G.png

这就是当id不再起作用时的样子(在相机翻译后:

https://i.stack.imgur.com/J9BKb.png

0 个答案:

没有答案