【问题标题】:Box2D and sonic-like physics for platformer用于平台游戏的 Box2D 和类声波物理
【发布时间】:2010-08-03 23:27:19
【问题描述】:

我正在为使用 Box2D 和 cocos2D 的 iPhone 开发平台游戏。

我正在尝试找到一种方法来为我的受控角色创建与 Sonic the Hedgehog 游戏中类似的行为,但保持使用 Box2D 物理库,因为我希望射弹和一些关卡对象的行为符合逼真的物理,以及涉及受控角色的某些情况(跳跃、撞到物体等)。

我遇到的主要问题是在越过凸曲线时将角色保持在地面上,并保持与地面的接触感,直到与地面保持相当大的距离。我只希望角色在地面上时对左右命令做出反应,但我的形状在经过轻微曲线时往往会离开地面,因此反应时间会短暂延迟,直到与我们重新建立联系。视觉上没有分离,但它足以改变在地面上的状态。此外,角色不会按照我想要的方式“拥抱”更大的曲线。

我尝试在地面上施加一个额外的向下力,但对于更大的曲线,它的工作速度不够快,而且足够大的力可以有效地干扰角色的正常移动。对这些问题有什么想法吗?

【问题讨论】:

    标签: cocos2d-iphone physics box2d


    【解决方案1】:

    根据我的经验,要获得真正的控制台式感觉需要您创建不切实际的物理效果,尤其是对于玩家角色。

    我相信在 box2d 中,您可以使用脉冲来破解运动系统,同时仍然可以访问碰撞检测。要么就是这样,要么让你的角色成为一个不动的物体,然后自己做运动。我忘记了哪个似乎对我有用。已经几个月了;)我相信在某些情况下我还对 y 轴上的向量进行了一些无效化以修复错误(斜率?)。

    如果您的运动在一般情况下正常工作,那么您可以在与曲线接触地面时进行运动,这是一种特殊情况,您自己处理物理,并且只在现实世界中闲逛以进行碰撞检测。

    另一种选择是让大多数对象使用“假”物理,并且仅将 box2d 用于碰撞检测或“真实”对象。

    【讨论】:

    • 现在我在玩家与地面接触时手动设置速度矢量。当玩家离开地面时,我让 box2d 接管。真正的问题是告诉玩家何时真正离开地面(跳跃或从悬崖上掉下来)与由于速度将玩家带离曲线并确保玩家跟随曲线而离开地面的微小时刻在周围。
    • @rpeck1682:我发现在某些情况下手动控制速度似乎没有达到我想要的效果。冲动可能有同样的问题。斜坡是我遇到的问题,因为我希望它们的行为与正常地面完全相同,类似于您的情况下的曲线。我得出的结论是,我必须自己在地面上处理所有物理,或者至少处理所有非平坦地面物理。不仅仅是冲动,而是完全处理角色的所有更新,并且只使用 box2d 进行命中/扫描测试。不过,我在尝试之前放弃了……
    • 好吧,今天我改变了很多。我开始使用力而不是设置速度矢量。当角色在地上时,我禁用重力。我只对 x 轴施加力,除了我实施的地面拥抱法向力。我调整了它,以便在尝试反转方向时加速度更高,因此转身很快。我改变了我的控制代码,这样你仍然可以快速改变方向,除非你明确地跳跃。我还添加了一个滚动状态,使角色受到现实物理的影响。到目前为止似乎运作良好。
    • @rpeck1682:如果您在回复之前执行“@Merlyn:”,我会收到一条消息说您回复了我:)
    • @rpeck1682:很高兴知道你已经成功了!如果你最终把它放到网上,我很乐意看到它工作,来源或没有来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多