【问题标题】:Libgdx applyforce to actor to finger touch/moving directionLibgdx 将作用力应用于手指触摸/移动方向的演员
【发布时间】:2013-08-20 06:16:17
【问题描述】:

假设我正在通过手指触摸和拖动移动来拉巴士。路不直。所以如果我在路上移动我的手指。公共汽车应该跟随手指以及转弯时需要的一些旋转。

首先找到actor和接触点之间的距离,如果小于则 我只是将总线(Actor)的位置设置为接触点位置。

现在感觉就像我在拖公共汽车。

现在我必须处理旋转。

我可以向接触点施加力吗? 我可以处理演员向接触点的旋转吗...

我心中的简单逻辑是拖动手指意味着画一条线..现在我必须将演员的中心线与拖动的线匹配..

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

【问题讨论】:

    标签: drag-and-drop rotation libgdx actor


    【解决方案1】:

    在我看来,您只是希望公共汽车沿着一条小路行驶,就像普通公共汽车沿着一条道路行驶一样。

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

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

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

    【讨论】:

    • 感谢您的回复,是的,您有我的问题。我可以使用 Box2D,但我不知道如何在 LibGdx 的主体中添加 Actor。所以使用简单的演员并手动计算。您在上面提到了使用 body.setTransform(..) ,我可以将它应用于简单的演员吗??或者我必须把我的演员(公共汽车)当作别的东西。
    • 演员与 Box2D 无关。它们是 scene2d API 的一部分,而不是 Box2D。除非您实现了自定义的“PhysicsActor”(它扩展了 Actor 并具有 Body 作为属性)。例如,这个新的 Actortype 将覆盖 translate(x,y) 并通过在 body 上使用 setTransform(...) 将其委托给 body。这个新的 Actortype 将成为您在 scene2d 和 box2d 之间的桥梁。如果您甚至还没有为您的总线使用 body,那么请忘记到目前为止的所有内容,而不是使用 setTransform,而是在 Actor 上使用 setPosition/setRotation。
    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多