首页 > 解决方案 > 如何通过拖动鼠标/手指来移动身体/演员?

问题描述

我目前正在使用 libgdx 用 Ja​​va 开发 Air Hockey 游戏。

游戏的重点是根据平台使用触摸或鼠标移动手柄,并用它来触摸冰球以使其四处移动。

我四处寻找,但找不到合适的解决方案。我知道有手势监听器、、、、等touchDragged方法...setTransformapplyForce

现在,为了测试它,我正在使用setLinearVelocity,身体获得鼠标点击的速度。这样,当手柄接触冰球时,它会完全按照我的意愿工作,接触侦听器会工作,冰球会朝正确的方向移动,但显然我不希望这种方法将运动应用于手柄。

那么如何使用触摸来移动它并确保手柄击中冰球呢?

标签: javalibgdxbox2d

解决方案


您可以使用 设置身体位置setTransform。为了用鼠标/手指移动它,您可以实现touchDragged的方法InputAdapter,如下所示:

Gdx.input.setInputProcessor(new InputAdapter() {
    public boolean touchDragged(int screenX, int screenY, int pointer) {
        body.setTransform(screenX, Gdx.graphics.getHeight() - screenY, 0);
        return true;
    }
});

另外我认为你应该将你的棍子定义为运动体:

像静态物体一样,它们不会对力做出反应,但像动态物体一样,它们确实具有移动的能力。运动学物体非常适合程序员想要完全控制物体运动的东西,例如平台游戏中的移动平台。

出于好奇,我自己做了一个测试。棒是运动体,球是动态的。如您所见,棍子不受任何力的影响:

box2d 模拟


推荐阅读