平台游戏 - 让对象根据鼠标位置调整角度

时间:2012-01-06 18:53:44

标签: java

我基本上要做的是一个平台游戏,你可以通过越过敌人等进入阶段。当你前进并拾取东西时,你会得到不同的武器。我希望你能拿到这些不同的武器,以便能够指向鼠标当前的方向。

由于它有点难以正确示例,我发现了一个视频,几乎可以显示我想要的内容,但使用了不同的精灵。 http://www.youtube.com/watch?v=8W7WSkQq5SU

所以,让我们说这是我用于其中一种武器的图像: Pickaxe

我如何调整它(伪代码)以使镐的正确位置指向鼠标的相同方向?

我只是在寻找一些伪代码,说明如何以最有效的方式和最顺畅的方式实现这一目标。

1 个答案:

答案 0 :(得分:4)

如果您使用的是Java Graphics2D,那么您必须使用AfflineTransform。要做到这一点,首先要转换到镐轴的点。然后你可以按照鼠标的方向旋转,可以使用atan2找到。然后你绘制轴,使偏移与轴点匹配。

伪代码:

#function drawAxe:
    translate(player.x, player.y);
    translate(pickaxis.x, pickaxis.y);
    rotation=toDegrees(atan2(mouse.y-player.y,mouse.x-player.x));
    rotate(roation);
    translate(-axisPointOnPickaxe.x, -axisPointOnPickaxe.y);
    drawImage(pickaxe.texture);
    IdentityMatrix();//[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]] or no transformation. i think you have to set a blank transform to do this in java efficiently
#endFunction drawAxe