【问题标题】:Cocos2D + Chipmunk: Disallowing Movement Along the X-axis & Preventing RotationCocos2D + Chipmunk:禁止沿 X 轴移动并防止旋转
【发布时间】:2013-04-30 16:20:21
【问题描述】:

我想要什么...

我们的目标是制作一个无尽的奔跑游戏,玩家必须通过跳跃来避开障碍和陷阱。为了做到这一点,不能允许角色水平移动,因为地面对象会处理这一点。当玩家跳跃时,唯一允许的移动将在 y 轴(垂直)上。同样为了实现这一点,我需要否定在游戏过程中身体可能发生的任何旋转。不确定是否有办法为旋转设置某种阻尼器或什么,但这就是我问的原因。

问题:

  • 如何取消沿 x 轴对身体进行的任何移动/平移?

  • 如何取消对身体进行的任何旋转?

(注意:我没有尝试过任何事情,因为我不知道从哪里开始,而且我是花栗鼠场景的新手)

【问题讨论】:

  • 在 step 之后将 body 的位置 X 坐标设置为应有的值。此外,您可能希望取消沿 x 轴的线速度。旋转也是如此。 Box2d 实际上有一个标志不允许物体旋转。

标签: ios cocos2d-iphone game-physics chipmunk


【解决方案1】:

创建具有无限惯性矩的实体,使其不可旋转。

至于让环境而不是玩家移动,这有点奇怪,但它会正常工作。你有几个选择,但它们都有点奇怪。您可以设置玩家形状的表面速度以匹配地面速度。然后摩擦力将其固定到位,直到有东西撞击它并将其向后推。当您清除障碍物时,摩擦将再次停止它的 x 速度。如果你设置了地面的表面速度,那么你也不需要移动它,只需要玩家必须清除的障碍物。

听起来你实际上并不想要物理。大多数跑步游戏只需要简单的 AABB 之间的碰撞,您可以使用几十行代码更轻松地完成。

【讨论】:

  • 我在这个项目之前问了一个关于这个项目的问题,关于我是否应该使用物理 API 或者是否有更简单的方法,我被告知使用 Chipmunk 会更容易。您是否知道我可以剖析和分析非物理版本的示例,或者您愿意更详细地解释此方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多