Libgdx 角色移动

Libgdx Character Movement

我最近跳进了 Libgdx。我的 ontouch 只工作了一半;当我 运行 以下内容时,我知道正在检测到触摸:

    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
player.b2body.applyLinearImpulse(new Vector2(5.1f, 0), player.b2body.getWorldCenter(), true);

        return true;
    }

我的角色 运行 正确,因此证明我的触摸设置正确并且正在被检测到。

我遇到的问题是让角色向左或向右 运行,具体取决于用户在屏幕上触摸的位置。如果用户向右按下,角色需要向右移动,如果向左按下,角色应该向左移动,在 x 轴上。我为此写的内容如下:

@Override
public boolean touchDown(int X, int Y, int pointer, int button) {

 //   player.b2body.applyLinearImpulse(new Vector2(5.1f, 0), player.b2body.getWorldCenter(), true);
    if(  player.getX()> X ){
        player.b2body.applyLinearImpulse(new Vector2(5.1f, 0), player.b2body.getWorldCenter(), true);
    }

    else if(  player.getX()< X ){
        player.b2body.applyLinearImpulse(new Vector2(-5.1f, 0), player.b2body.getWorldCenter(), true);
    }
    return true;
}

但是在我的代码中我的角色没有移动,我想我是在错误地检查玩家的位置。谁能告诉我我做错了什么/怎么做错了?

触摸位置以屏幕坐标给出。您的玩家存在于您创建的任何世界坐标中。您需要使用 Camera.unproject 使用相机将屏幕坐标转换为世界坐标。