直接点击java libgdx拍摄对象

时间:2015-11-03 02:59:02

标签: java libgdx

我试图让我的玩家射出一个咒语,然后它会移动到玩家点击的地方。我可以通过以下方式轻松完成此任务。

    if(position.x >= destination.x - 1 && position.x <= destination.x + 1)
        reachedX = true;
    if(position.y >= destination.y - 1 && position.y <= destination.y + 1)
        reachedY = true;

然而,如果玩家原点位于例如0,0并且我点击10,300然后它向右和向上行进但是当该法术达到x为10时它直接向上行进。我希望法术以一个角度行进,它将与y坐标同时到达x坐标。这是一张图片,展示了发生了什么以及我想要发生什么。

Image example

1 个答案:

答案 0 :(得分:4)

在第一张照片中,它看起来像是45度,直到它到达正确的x坐标。无论目标点在哪里,这听起来都是x和y速度相等 你应该有一个方向,取决于x和y的速度 为此你首先需要明白,玩家正在点击 因此,您可以实施InputProcessor,并touchDown(int screenX, int screenY, int pointer, int button) screenXscreenY参数以屏幕坐标(像素)给出,因此需要转换为您的世界坐标。这可以使用cameraviewport以及unproject(Vector2 screenCoords)来完成。此方法返回Vector2,给出世界坐标 现在,您需要找出您与点击点之间的方向Vector2。方向Vector的计算方式如下:

new Vector2(otherPos.x - myPos.x, otherPos.y - myPos.y).nor();

这将返回两点之间的标准化方向Vector 现在你只需要在x方向上移动dir.x*spellSpeed*delta,在y方向移动dir.y*spellSpeed*delta,它应该在你的第二张图片中显示。