9

在一场足球比赛中,我正在使用转向行为计算转向力。这部分没问题。但是,我正在寻找实现简单 2d 人体运动的最佳方法。

例如,当转向力与当前速度或航向矢量之间的 cos(角度) 低于 0.5 时,玩家不应“转向”(或简单地将根据转向力计算的加速度添加到其当前速度,因为它看起来好像玩家是一辆车。一个人,当有一个重要的方向改变时,会放慢速度,当它放慢了足够的速度时,它会开始向新的方向加速。

有没有人对如何实现这种行为有任何建议和想法?提前致谢。

4

4 回答 4

4

让它非常快速地改变方向,但没有完美的摩擦。EG超级马里奥

编辑:但脚不应该滑动 - 对脚使用程序动画

于 2010-01-25T15:51:47.860 回答
3

这已经在一项名为“Robocup”的计划中进行了研究和开发。他们有一个模拟 2D 联赛,应该与您想要完成的任务非常相似。

这是一个应该指向正确方向的链接: http ://wiki.robocup.org/wiki/Main_Page

于 2010-01-25T17:29:19.770 回答
2

也许你可以计算曲率。如果曲率值太大,速度会变慢。 http://en.wikipedia.org/wiki/Curvature

于 2010-01-25T17:24:08.647 回答
1

在低速时,一个人可以打开一角钱。在高速下,只有非常轻微的转弯不需要减速。因此,转弯的速度和半径密切相关。

一个人在瞄准目标时减速多少实际上是一个判断,而不是一个自动计算。一个人可能会几乎完全停下来,急转弯,然后直接朝目标跑去。另一个人可能只会放慢一点速度并做出一个宽弯曲的弧线——即使这会增加到目标的总长度。唯一需要注意的是,如果所需的目标在当前速度的曲线半径内,唯一合理的路径是放慢速度,因为它需要远离目标的宽循环才能到达它(而不是无休止地绕着它转) )。

这就是我将如何去做。如果您更喜欢公制,我为英制单位道歉。

  1. 有史以来最快的人类以不到 28 英里/小时的速度行驶。您的每个人力单位都应获得 1 到 28 英里/小时之间的个人最高速度。
  2. 创建一个包含 29 个元素的表格,其中包含人类以每整英里/小时直线行驶的最大加速度和减速度。它不必是精确的——只是每个值的近似加速和减速值。创建 29 元素表的快速、中等、慢速版本,并将每个人分配到这些表之一。选择的表格可能会映射到设备的最高速度,因此最大时速为 10 英里/小时的设备将是一个慢速加速器。
  3. 创建一个包含 29 个元素的表格,该表格具有人类在该 mph (0-28) 时可以转弯的最大半径。

现在,在为每个人体单元设置动画时,如果您有目标信息并且必须从中选择加速度,那么任务就更难了。相反,如果您只有一个力矢量,那就更容易了。让我们从力矢量开始。

  1. 如果力矢量的净加速度和合成角度超过单元的能力限制,则将单元的新矢量限制在允许的最大角度,并以当前线速度的最大速率使单元减速。
  2. 在下一个时钟滴答声中,速度变慢,它将能够更急剧地转动。
  3. 如果可以完全适应力矢量,但单元的行进速度低于该曲率的最大速度,则应用该单元在该速度下的最大加速度。

我知道细节会很困难,但我认为这是一个好的开始。

对于你有一个目标并且需要选择一个力来应用的路径版本,问题有点不同,甚至更难。我现在没有想法 - 但我只想说,鉴于人类已经以最快速度逃离目标的示例条件,将有一个最佳时间路径,一方面,转弯时放慢足够的速度以完成与目标的完美弧线,另一方面完全停止,完全旋转并直接奔向目标。

于 2012-07-26T00:22:43.647 回答