java - box2d 、 libgdx - 玩家 body 具有宇宙飞船的相对速度,但仍然能够移动

标签 java libgdx 2d box2d topdown

我正在创建一个自上而下的 2D 游戏,并且使用 Box2D 来模拟物理,我的问题是:

如何使玩家保持与我的宇宙飞船的相对速度,并且仍然能够在飞船也在移动的情况下围绕我的玩家移动?

我在下面放了一个插图。
illustration

到目前为止我已经尝试过:

将玩家 body 的线速度设置为与飞船相同,这使得玩家几乎附着在飞船上,而我无法移动玩家,因为我在每次更新后设置线速度。

尝试接头似乎不是我想要的,我可能是错的,我已经尝试了WeldJoint和FrictionJoint,当我进入船时添加它们。但是,由于焊接接头,我无法移动玩家,因为我被焊接到了船上。

预先感谢您的帮助!

最佳答案

仅当您的玩家 Controller 未被按下时,“将玩家 body 的线速度设置为与船相同”怎么样?

如果您使用scene2d对于您的 UI,这些 ActorsisTouched方法。或者,如果您只使用按钮,则可以创建 boolean字段并设置,如果触摸了任何控制按钮,则为 true;如果没有触摸,则为 false

因此,您的播放器 Controller 方法可能如下所示。

void playerController() {
     if (!playerControllerBottonTouched) { // or actor.isTouched()
        playerBody.setLinearVelocity(shipBody.getLinearVelocity().x, 
                                     shipBody.getLinearVelocity().y);
     } else {
           playerBody.applyLinearImpulse(*impulse that you want*);
       }
}

关于java - box2d 、 libgdx - 玩家 body 具有宇宙飞船的相对速度,但仍然能够移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868405/

相关文章:

java - Linux 上的 Java 实时事件调度入门?

java - 子弹物理,纹理球体不滚动

python - 将一个列表中的特定行附加到另一个列表

java - Libgdx 将位图字体对齐到屏幕右上角

android - 居中纹理 LibGDX

C 二维数组转化为链表

java - 如何使用 Sprite 作为另一个 Sprite 的 anchor ?

java - Gson:日期上的 JsonSyntaxException

java - 如何使用泰坦 API?

java - 不寻常的通用语法 : Arrays. <String>asList(...)