【问题标题】:how to make a box2d body move along a Bezier curve/ arc path如何使 box2d 主体沿贝塞尔曲线/圆弧路径移动
【发布时间】:2012-09-04 22:44:05
【问题描述】:

我已经广泛搜索了如何使 Box2d 主体沿 Bezier 曲线或弧形路径移动,其中包含起点、终点和可能的另一个控制点。我知道 cocos2d 对象可以使用 ccBezier 移动,但如何为 Box2d 主体完成呢?请帮忙。提前致谢。

【问题讨论】:

  • 您可以使用 SetTransform 设置 b2Body 的位置。根据需要经常更新它。您还可以使用 SetLinearVelocity 使身体向所需点移动。
  • @iforce2d:我不确定如何设置线速度以使身体上升和下降(以弧形/贝塞尔曲线运动)。我希望我不会要求你给我一个例子。谢谢。
  • 这里的源代码可能有用:iforce2d.net/b2dtut/sticky-projectiles(右侧上下运动的运动体在1d中沿正弦曲线运动,您可以将目标位置更改为on你的贝塞尔曲线)
  • @iforce2d:谢谢。 Box2d 代码有点高级,我试图了解它是如何工作的。我还在Projected Trajectories 上看到了您的教程。我喜欢弹丸并相信这样的东西对我来说会更好,那就是一旦我了解如何在我的代码中重新实现它。你说什么?

标签: cocos2d-iphone box2d physics game-physics box2d-iphone


【解决方案1】:

我尝试使用曲线移动 box2d 物体(让蜘蛛绕着小行星行走)。我发现使用 SetTransform 每一帧都有效,但它使引擎中的碰撞响应失败。

我能够通过使用棱柱接头找到更好的解决方案。您从要开始的位置 (p0) 创建一个关节,并指向下一个航路点 (p1)。然后让关节使用电机将身体从 p0 推到 p1。当身体非常接近下一个点时,破坏关节并为接下来的两个点形成一个新的关节。身体仍然有它的速度,所以运动看起来很平滑。

I put a more complete post on this on Stack Overflow here.

这有帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2021-09-10
    • 2014-08-13
    相关资源
    最近更新 更多