2013-08-20 81 views
1

考虑我是通过手指触摸和拖动移动拉总线。路不直。所以如果我沿着道路移动我的手指。公共汽车应该随着手指一起转动,并在转弯时需要一些转动。Libgdx适用于演员手指触摸/移动方向

首先找到演员和接触点之间的距离,如果它小于 我只是设置巴士(演员)的位置触摸点的位置。

现在它感觉像我拖着巴士。

现在我必须处理旋转。

我可以对接触点应用强制吗? 我可以处理对接触点演员的旋转...

在我的脑海

简单的逻辑是拖手指指绘制line..now我有相匹配的演员拖线的中线..

请给我关于处理公共汽车轮换的暗示。 谢谢,

回答

1

这听起来对我来说就像你只是想让公共汽车遵循像普通公共汽车的路径将遵循道路。

您可以通过对其施加扭矩来旋转身体。这意味着你将使用applyForce(...)而不是使用质量中心作为施加力的点。

但是你不想施加一个力量并让它朝着某个目标点移动,因为那样看起来很奇怪,而且你需要一些特殊的物理处理方式来实现汽车物理现实(对于自上而下,你可以看到这里http://www.iforce2d.net/b2dtut/top-down-car)。

更好的是自己计算路径并计算该路径上不同点之间的角度。然后使用body.setTransform(...)手动设置总线的位置和旋转。如果你没有任何物理引擎,那么你也会这样做。

+0

感谢您的回复, 是的,你有我的问题。我可以使用Box2D,但我不知道如何在LibGdx中添加主体。所以只需使用actor并手动计算。 你上面提到过使用body.setTransform(..),我可以将它应用于简单的演员??。 或者我必须把我的演员(巴士)当成别的东西。 –

+1

演员与Box2D无关。它们是scene2d API的一部分,而不是Box2D。除非你实现了一个自定义的“PhysicsActor”(它扩展了Actor并将Body作为一个属性)。例如,这个新的Actortype将覆盖translate(x,y),并通过在body上使用setTransform(...)将其委托给body。这个新的Actortype将成为您在scene2d和box2d之间的桥梁。 如果你还没有为你的公交车使用车身,那么到目前为止忘掉一切,而不是在Actor上使用setTransform使用setPosition/setRotation。 – noone