只要按下显示,就可以使用applyForce

时间:2015-08-29 10:11:45

标签: java android libgdx box2d

在我的项目中,我有自己的主角。只要屏幕被按下,我希望它在y轴上向下移动。我用

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

但这只做了一次。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

试试这个:

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)来判断我猜测你没有扩展世界,所以物理学可能无法按预期工作。