在方向的边界内动画化对象

时间:2012-01-12 19:20:33

标签: animation

所以,仅仅为了踢,我决定掀起一场“塔防”游戏。我把所有的核心概念都放下了。只有一个方面我还没有真正弄明白。

沿路径设置动画对象的最佳方法是什么?

我不希望路径过于僵化,我希望会有一点点差异。

我的想法几乎就像一条“河流”,物体飘落下来,那里有物体无法通过的堤岸,以及定义方向的流动。如果一个物体撞击一个堤岸,它应该只是从边缘向“河流”的中心反弹并始终朝向“下游”

我希望答案远离框架,尽可能合理。而且我认为语言不应该太重要(如果它更好地说明了这个过程,请随意发布代码/伪代码!)。

修改 现在我正在考虑它,像A *路径发现(或其他如果A *没有意义,这只是我所知道的主要方法)的方法是合理的吗?当然有一个“退出”的概念,对象试图去,所以我想我可以有一个规则,说“这些像素是无法通行的,什么是通往出口的最短路径”。如果需要,可以为路线添加一定量的差异。

思想?

1 个答案:

答案 0 :(得分:1)

以下是我将如何处理此问题:

Pathfinding

在此图像中,棕色路径表示您的坏人将要走的路径,黄色方块是航点,红色边缘是路径边界。这基本上是他们的状态如何发展:

Have I hit a waypoint?
  Yes, adjust my forward axis
    Choose the next waypoint
    My forward direction is toward that waypoint
Am I touching a red boundary?
  No, I can wander left or right
  Yes, it's on my right
    I should wander left
  Yes, it's on my left
    I should wander right
Add lateral movement based on the wander direction I've chosen

这里有一些可以微调的变量:

  • 坏人应该在一定时间内承诺一个方向,除非他们击中一个航点,这样他们就不会抖动
  • 当他们遇到路径边界时,他们应该远离它一定量,以便它们不会反弹它
  • 在进入下一个点之前,坏人应该到达航点的中心。否则,他们可能会被困在尖角上。

如果您的等级是预先生成的(我相信大多数TD游戏都是这种情况),那么您可以在创建地图时设置航点。如果你是在程序上生成它们,那么只需将你希望河流下游的航路点改变超过+/-五度。对于这样的约束域,A *有点过分。如果你想增加一点点变化,你可以考虑分支路径,其中坏人从随机选择中选择下一个路点,你可以设置一个T接头,坏人访问A,然后是B,然后是C,然后是B,然后D.原型应该很容易,正确的感觉会随着你允许或鼓励的横向运动进行一些调整。