我正在使用当前的鼠标位置来瞄准玩家 Sprite ,但我没有获得最佳结果。我希望我的 Sprite 的方向指向屏幕上光标所在的任何位置。这是我想要得到的结果。 (当我移动鼠标时,喷气机缓慢旋转)
但这就是我得到的:1)当我的鼠标位置 y = 0 时,喷射 Sprite 旋转非常缓慢(但旋转永远不会停止)
2)当我的 y =(屏幕高度) Sprite 旋转得非常快(而且它也永远不会停止) 这是我的代码:我的更新方法
public void update(float dt){
time += dt;
float yInput = (Gdx.graphics.getHeight() - Gdx.input.getY());
vec.set(Gdx.input.getX() - position.x, yInput - position.y).nor();
//position is a Vector2 update sprite coordinates
position.x += vec.x * 15f;
position.y += vec.y * 15f;
}
这是我的绘制方法
public void draw(){
batch.begin();
sprite.setPosition(position.x - sprite.getWidth()/2, position.y - sprite.getHeight()/2);
float xInput = Gdx.input.getX();
float yInput = (Gdx.graphics.getHeight() - Gdx.input.getY());
float angle = MathUtils.radiansToDegrees * MathUtils.atan2(yInput - position.y, xInput - position.x);
if(angle < 0){
angle += 360;
}
sprite.rotate(angle);
sprite.draw(batch);
batch.end();
}
最佳答案
在 draw
方法中,将 sprite.rotate(angle);
替换为 sprite.setRotation(angle);
。
rotate()
将相对于当前旋转来旋转 Sprite 。 atan2
返回一个绝对角度,这可能会导致您的问题。
关于java - Sprite 旋转无法正常工作 LibGDX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345132/