在2D游戏中使用box2d来控制精灵的移动是个好主意吗?

我试图使用Box2D来控制精灵运动。一些灼热的问题是:

当我试图将精灵移动到斜坡或精益屏障上时。 精灵会从斜坡上移走,这不是我想要的。

2.另外,我可以使用由cocos2d-x提供的setPosition或者CCAction来移动精灵并且使用SetTransform来更新身体位置。 但身体会失去它的身体局限,它会通过其他身体。

感谢您的时间,如果你们有任何解决scheme?

这是一个非常难的问题,因为最终它将取决于你正在尝试创建的游戏种类。 然而在大多数情况下,使用像Box2D这样的物理引擎可能会过度杀伤。

特别是对于不包含任何物理难题的简单2D平台,我会自己去做math。 说实话不难。

为了能够站在地形和斜坡上,你只需要实现一些非常基本的运动:

  • 动作:左右碰撞时,左右移动角色,不用担心碰撞。 要么移动你的性格绝对距离,要么调整他的速度。
  • 重力:检查角色的脚是否有坚实的东西(取决于你的实现,你可以跳过这个检查,因为你会检查下一个)。 如果没有,则向下移动或加速。
  • 碰撞:移动角色后,确认他没有input任何内容:
    • 当他的左边部分是固体的时候,把角色移到右边。
    • 将角色移到左边,而他的右边部分是固定的。
    • 将角色向上移动,而其底部则处于坚固状态。
    • 将角色向下移动,而顶部则处于坚固状态。
    • 如果角色的两个对立面卡在固体(左,右或顶部和底部),你的角色被挤压。 像超级马里奥兄弟这样的游戏会导致你的角色死亡。

回到斜坡的初始问题:使用上面的逻辑,你的角色首先不会跟随斜坡。 它将基本上“进入”斜坡。 但是,由于碰撞下的逻辑,他将会向上调整,基本上是沿着斜坡向上(或向下)。