applyForce 只要显示被按下

applyForce as long as display is pressed

在我的项目中,我有我的主角body。只要按下屏幕,我希望它在 y-axis 上向下移动。我用

试过了
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
        jetski.applyForce(new Vector2(0,-1000), jetski.getWorldCenter(), true);
        return true;
    }

但这只做了一次。

我假设您的项目中有一个主循环,因为看起来您正在开发游戏。通常使用 flag(-s) 来表示用户输入。假设我们有一个标志 isTouched。因此,当用户第一次触摸显示屏时,isTouched = true。然后当用户不再触摸显示器时,isTouched = false。最后,在你的主循环中 if (isTouched) applyForce(); 。 Android API 或 libgdx(从标签判断)应该能够为 onTouchonTouchRelease 事件提供侦听器。请注意,它们可能被称为不同的东西。

试试这个:

boolean isTouched = false;

public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        isTouched = true;
        return true;
}

public boolean touchUp(int screenX, int screenY, int pointer, int button) {
        isTouched = false;
        return true;
}

public void update(float delta) {
    // update other stuff

    if (isTouched) {
        jetski.applyForce(new Vector2(0,-1000), jetski.getWorldCenter(), true);
    }

    // update other stuff
}  

您可能想将 -1000 更改为更低的值,因为它会在每一帧添加 -1000 力,并且可能会添加一个限制。另外,根据力 (-1000) 判断,我猜你没有缩放世界,所以物理学可能无法按预期工作。