塑造人类在足球场上运行

时间:2010-01-25 15:45:23

标签: physics

在足球比赛中,我正在使用转向行为来计算转向力。这部分还可以。 但是,我正在寻找实现简单的2d人类运动的最佳方法。

例如,当转向力与当前速度或航向矢量之间的cos(角度)低于0.5时,玩家不应该“转向”(或简单地将由转向力计算的加速度)添加到其当前速度,因为它看起来好像玩家是车辆。一个人,当方向发生重大变化时,速度变慢,当速度变慢时,就开始加速向新方向发展。

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

4 个答案:

答案 0 :(得分:4)

让它快速改变方向,但没有完美的摩擦力。 EG super mario

编辑但脚不应滑动 - 使用脚的程序动画

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

当瞄准目标时,人的减速程度实际上是判断调用,而不是自动计算。一个人几乎可以完全停下来,急转弯,然后直接向目标跑去。另一个人可能只会减慢一点并产生一个宽的弯曲弧 - 即使这会增加到目标的总长度。唯一需要注意的是,如果所需的目标位于当前速度的曲线半径范围内,那么唯一合理的路径就是减速,因为它需要一个远离目标的宽回路才能到达它(而不是无休止地环绕它) )。

以下是我将如何去做。如果您更喜欢公制,我会为帝国单位道歉。

  1. 有史以来最快的人类记录速度不到28英里/小时。每个人体单位的最高速度应该在1到28英里/小时之间。
  2. 创建一个29个元素的表格,其中显示了每个整个英里每小时行驶的人的最大加速度和减速率。它不必是精确的 - 只是每个值的近似加速和减速值。创建29个元素表的快速,中速,慢速版本,并将每个人分配给其中一个表。选择的表可以映射到单位的最高速度,因此最大10mph的单位将是一个缓慢的加速器。
  3. 创建一个29个元素的表格,其中人类可以以该英里/小时(0-28)转动的半径最深。
  4. 现在,在为每个人体单元设置动画时,如果您有目标信息并且必须从中选择加速度,那么任务就更难了。相反,如果你只有一个力矢量,那就更容易了。让我们从力矢量开始。

    1. 如果力矢量的净加速度和合成角度超过了装置能力的极限,则将装置的新矢量限制在允许的最大角度,并使装置以其当前线速度的最大速率减速。
    2. 在下一个时钟滴答声中,慢一点,它就会变得更加明显。
    3. 如果力矢量可以完全适应,但单位行驶速度低于该曲率的最大速度,则应用该单位在该速度下的最大加速度。
    4. 我知道细节会很困难,但我认为这是一个好的开始。

      对于您有目标且需要选择要应用的力的路径版本,问题会有所不同,甚至更难。我现在已经没有想法 - 但是可以说,考虑到人类已经远离目标顶部的示例条件,一方面会有一条最佳时间路径,转向完成一个完美的弧线到目标,然后完全停止,完全旋转并直接跑到目标。