在一场足球比赛中,我正在使用转向行为计算转向力。这部分没问题。但是,我正在寻找实现简单 2d 人体运动的最佳方法。
例如,当转向力与当前速度或航向矢量之间的 cos(角度) 低于 0.5 时,玩家不应“转向”(或简单地将根据转向力计算的加速度添加到其当前速度,因为它看起来好像玩家是一辆车。一个人,当有一个重要的方向改变时,会放慢速度,当它放慢了足够的速度时,它会开始向新的方向加速。
有没有人对如何实现这种行为有任何建议和想法?提前致谢。
在一场足球比赛中,我正在使用转向行为计算转向力。这部分没问题。但是,我正在寻找实现简单 2d 人体运动的最佳方法。
例如,当转向力与当前速度或航向矢量之间的 cos(角度) 低于 0.5 时,玩家不应“转向”(或简单地将根据转向力计算的加速度添加到其当前速度,因为它看起来好像玩家是一辆车。一个人,当有一个重要的方向改变时,会放慢速度,当它放慢了足够的速度时,它会开始向新的方向加速。
有没有人对如何实现这种行为有任何建议和想法?提前致谢。
让它非常快速地改变方向,但没有完美的摩擦。EG超级马里奥
编辑:但脚不应该滑动 - 对脚使用程序动画
这已经在一项名为“Robocup”的计划中进行了研究和开发。他们有一个模拟 2D 联赛,应该与您想要完成的任务非常相似。
这是一个应该指向正确方向的链接: http ://wiki.robocup.org/wiki/Main_Page
也许你可以计算曲率。如果曲率值太大,速度会变慢。 http://en.wikipedia.org/wiki/Curvature
在低速时,一个人可以打开一角钱。在高速下,只有非常轻微的转弯不需要减速。因此,转弯的速度和半径密切相关。
一个人在瞄准目标时减速多少实际上是一个判断,而不是一个自动计算。一个人可能会几乎完全停下来,急转弯,然后直接朝目标跑去。另一个人可能只会放慢一点速度并做出一个宽弯曲的弧线——即使这会增加到目标的总长度。唯一需要注意的是,如果所需的目标在当前速度的曲线半径内,唯一合理的路径是放慢速度,因为它需要远离目标的宽循环才能到达它(而不是无休止地绕着它转) )。
这就是我将如何去做。如果您更喜欢公制,我为英制单位道歉。
现在,在为每个人体单元设置动画时,如果您有目标信息并且必须从中选择加速度,那么任务就更难了。相反,如果您只有一个力矢量,那就更容易了。让我们从力矢量开始。
我知道细节会很困难,但我认为这是一个好的开始。
对于你有一个目标并且需要选择一个力来应用的路径版本,问题有点不同,甚至更难。我现在没有想法 - 但我只想说,鉴于人类已经以最快速度逃离目标的示例条件,将有一个最佳时间路径,一方面,转弯时放慢足够的速度以完成与目标的完美弧线,另一方面完全停止,完全旋转并直接奔向目标。