java - Sprite 旋转无法正常工作 LibGDX

标签 java rotation libgdx

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

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

enter image description here

2)当我的 y =(屏幕高度) 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/

相关文章:

java - 如何更新元素以使其不包含已删除的链接?

iphone - 如何制作从 UIImagePickerController 返回的 UIImage 的精确副本?

android - 安卓游戏中的通知

java - 如何获取经过哈希处理的数据的真实值(value)?

java - 带有次要和主要标签的 JSlider?

java - 什么是 Java 中的应用程序级类?

ios - 在xcode中旋转图像

iphone - 如何防止模态 UIImagePickerController 旋转?

android - 引用另一个类时出现 Libgdx Screen NullPointerException

java - LIBGDX 资源管理器加载 True Type 字体