gpt4 book ai didi

java - Sprite 旋转不能正常工作 LibGDX

转载 作者:行者123 更新时间:2023-11-30 08:59:13 26 4
gpt4 key购买 nike

我正在使用当前的鼠标位置来瞄准玩家 Sprite ,但我没有得到最好的结果。我希望我的 Sprite 的方向指向我的光标在屏幕上的任何地方。这是我想要得到的结果。 (当我移动鼠标时,喷射器会缓慢旋转)enter image description here

但这就是我得到的:1)当我的鼠标位置 y = 0 jet sprite 旋转非常缓慢(但旋转永远不会停止)

enter image description here

2) 当我的 y = (Screen Height) Sprite 旋转得非常快时(而且它也从不停止) enter image description here这是我的代码:我的更新方法

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com