所以我目前用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,它是相同的
感谢您抽出宝贵时间帮助我! :)