壁架爬升动画和移动(二维平台游戏)


11

努力为物理驱动的2D平台游戏平台实施壁架攀爬机械师做出决策。避免过于复杂的最佳方法是什么?

到目前为止,我了解(这里的爱好者不是专业人士)有几种选择,包括:

  1. 在y轴上对刚体施加受控的力,直到根部位置刚好在手部位置上方,然后在x轴上施加足够的力,以使角色站立在平台上。同时以某种方式将其与爬升动画同步。

    备注:在这里运动很容易,甚至可以通过棱柱形滑动关节进行控制,但是我不确定如何使动画(脊柱)与运动保持同步。

  2. 驱动角色根部位置的根动画。完成后传送刚体,并希望box2d仍能及时对任何碰撞(如果有任何物体从天上掉落)做出适当响应。

    备注:听起来实际上更容易制作动画,但是不确定我是否会在spine运行时,box2d或更高版本的移动平台和不同高度的平台上遇到任何问题。

  3. 以编程方式在手上应用IK约束以将其锁定在适当位置,然后继续手动旋转骨骼或应用小的预设(少量关键帧/帧)动画,同时将所需的力施加到刚体上。

    备注:似乎这样可以最大程度地控制播放器,但是对于我来说,在我的水平上实现它听起来很复杂,而不是确切地确定从哪里开始。

预先感谢您的任何投入!

仅供参考:这是一个带box2d的基于ECS(libgdx + Ashley)的引擎。壁架抓斗已经实现为一个单独的系统,因此我们在这里可以假定角色已经能够从任何高度的壁架上悬挂下来。

Answers:


1

我相信您需要在这里做出更多选择,然后才能做出正确的决定,特别是角色挂着/爬上时会发生什么?

因为您说游戏是基于物理学的,所以我假设您在悬挂或攀爬时可能会掉落一块岩石,所以如果是这种情况,我认为进行rootmotion可能是最简单的解决方案,则只需为攀爬设置动画,它在攀爬时处于稍微不同的悬挂状态,唯一的不同是您无法启动攀爬动作。

现在,这假设您已控制了整个挂起情况,这意味着如果在挂起时发生任何交互,角色将做出适当的反应。

然后,您需要做的就是在完成爬升动画后将角色的状态设置为空闲。


0

您可以向上移动n次,直到脚踩在壁架上并暂时忘记物理条件,我认为它可以很好地工作,您可以随时测量掉落的物体与玩家之间的距离,以防在碰撞过程中碰撞失败转换翻译。确保发生碰撞。


0

如果将播放器按在可攀爬物体上,则允许其在Y轴上向上/向下移动。在此状态下,请确保其不能在X轴上移动。移动时,可以在攀爬动画上调用Animation.Sample,以确保动画中的点与攀爬的距离匹配,而不是尝试对所有时间进行计时。


0

在我看来,“最佳”方法是:当您检测到可能进行爬坡时,暂时锁定玩家的位置。将动画与根动画一起使用并锁定控件。动画结束后,解锁玩家的位置和控件。

当然,如果您不顾一切地这样做,它将看起来很奇怪,或者它需要像素完美的精度。但是您可以避免-为玩家提供一定的攀爬范围,并通过弯腰迅速将位置调整至最佳位置。


0

玩家在半空中时是否可以自由地水平移动(空中控制)?如果是这样,我只需要施加适当的垂直力即可使玩家的脚在平台上方,并使玩家在平台上水平移动。

这将使玩家能够更好地控制角色并打开更多的移动选项-例如,如果玩家(在壁架上悬吊时)想要跳跃,射击平台上的某个物体,然后跌倒并重新抓住在弹丸行进到目标时突击,以躲避目标向玩家发射的弹丸。这样的策略可能会形成有趣的老板战斗策略。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.