创建一个跟随触摸/鼠标输入的点,但保持与另一个静止点的固定距离

时间:2013-03-05 00:51:51

标签: java math libgdx

我想在屏幕中间创建一个静止点,当用户触摸并拖动屏幕时,它应该创建另一个点,该点将跟随用户输入,但始终与其他静止点保持固定距离。我可以很容易地做到这一点,以便游戏告诉我第二个点何时在那个确切的距离上拖动它。

public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
    setPosition(a, b);
    return true;
}

所以基本上我想知道如何正确设置a(x坐标)和b(y坐标)。 另外我不确定这是否更像是一个数学问题,或者libgdx(或者java)是否有任何可以使用的漂亮东西? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

对于特定于Libgdx的支持,我所知道的并不多。也就是说我认为您可以使用Vector2然后对其进行标准化(Vector2.nor()),然后将其乘以“固定距离”(Vector2d.mul()

private final Vector2 perimiterPoint = new Vector2();
private float centerX = ...;
private float centerY = ...;
private float radius = ...; // The "fixed distance" radius of your circle.

public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
    perimiterPoint.set(x - centerX, y - centerY).nor().mul(circleRadius)
    setPosition(perimiterPoint.x, perimiterPoint.y);
    return true;
}