两点之间的角度并计算旋转

时间:2015-04-02 11:57:12

标签: java vector rotation libgdx

所以我目前用libGDX用Java编写一个小游戏。

我希望玩家纹理直接旋转到鼠标位置。 不幸的是我的代码不起作用,我完全不知道为什么不这样做。

所以,我在播放器的Update方法中调用此方法:

private void CalculateRotation()
{
    rotation = Position.angle(input.getTranslatedMousePos());
}

位置只是一个玩家位置的Vector2。 我得到了如下的translatedMousePos:

public Vector2 getTranslatedMousePos()
{
    Vector3 v = camera.unproject(new Vector3(MousePos.x, MousePos.y, 0));

    return new Vector2(v.x, v.y);
}

而MousePos由以下代码确定:

@Override
public boolean mouseMoved(int screenX, int screenY) {
    MousePos = new Vector2(screenX, screenY);
    return false;
}

我画这样的玩家精灵:

public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.draw(new TextureRegion(txt), Position.x, Position.y, (float)(size.x * 0.5), (float)(size.y * 0.5), size.x, size.y, 1.0f, 1.0f, rotation);
}

不幸的是精灵转了,但绝不指向光标。

我发现了以下事情:

  • spriteBatch.draw(...,rotation)接受度数,Vector2.angle以度为单位给出角度

  • translateMousePos似乎是正确的,我想通过将鼠标悬停在玩家精灵(即(1000 | -1000))和"打印" translatedMousePos,它是相同的

感谢您抽出宝贵时间帮助我! :)

0 个答案:

没有答案