1

将示例与我正在尝试的存储桶一起使用,而不是使用

 if(Gdx.input.isTouched()) {
         Vector3 touchPos = new Vector3();
         touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);

使用 touchUp 和 touchDown。

所以,为了使用它们,我定义:

 Vector2    position = new Vector2();
 Vector2    velocity = new Vector2();

接着 :

public boolean touchDown(int x, int y, int pointer, int button) {

    if (x < 800 / 2 && y > 480 / 2) {
        //here?? for left movement
    }
    if (x > 800 / 2 && y > 480 / 2) {
        //here?? for right movement
    }
    return true;

}

一般来说,我知道我有一个位置和一个速度。我必须更新与速度相关的位置,但我不知道如何。

4

1 回答 1

2

您必须使用 deltatime 和速度矢量在每一帧更新对象的位置。

像这样的东西(在渲染中):

position.set(position.x+velocity.x*delta, position.y+velocity.y*delta);

和:

public boolean touchDown(int x, int y, int pointer, int button) {

    if (x < 800 / 2 && y > 480 / 2) {
        //here?? for left movement
        velocity.x = -10;
    }
    if (x > 800 / 2 && y > 480 / 2) {
        //here?? for right movement
        velocity.x = 10;
    }
    return true;
}

public boolean touchUp(int x, int y, int pointer, int button) {
    velocity.x = 0;
}
于 2013-06-20T20:46:20.537 回答