如何在3D RTS中实现组队形?


14

我设法为单个单位找到寻路工作,并设法避免了座席与座席发生冲突,但是现在我需要能够将一组座席发送到某个位置。

到目前为止,这是我的设置:

  • 航点寻路
  • 两个节点之间的最小距离略大于代理所允许的最大边界球半径。
  • 代理通过基于clearpath进行一些转向行为来避免与其他代理发生冲突

因此,现在我需要将代理发送到组中的某个位置。我读过一些帖子说,做某件事的某种方法是创建一个小组组长,并让其他部门抵消其职位。

但是问题是,如果无法实现组建怎么办?例如,您想形成一个矩形,但是在目标位置附近有一个结构,使您无法创建矩形设置。


2
我在工作,所以我没有时间写下正确的答案,但这是我的零点2美分:使用Boids植绒算法,然后将障碍物表示为排斥Boids的物体。
指甲

@Nailer他的植绒算法只要它们在移动就可以工作,但是我将如何检测它们的最终位置是否“正常”,并通知他们可以停止移动?不用担心,我可以等待您的回答;)
xcrypt

Answers:


13

实际上,Gamasutra上有一篇很不错的文章。并涵盖诸如编队和解决冲突之类的主题:

在此处输入图片说明

他们的另一篇文章是关于同一主题的,虽然篇幅较短,但具有更多的伪代码示例:

在此处输入图片说明

最后,在实现系统时要考虑的一个妙事是“ 最高指挥官2”使用的“流场”概念;它基于华盛顿州立大学的人群流动研究。


谢谢,我已经看到了最高统帅部连续不断的人群寻人的东西,但我想我会坚持使用我拥有的atm。当我获得更多经验时,我会尝试这样做,因为是的,它看起来确实很漂亮; D
xcrypt

2

我认为您可以拥有一个看不见的“羊群实体”,它是阵型的首领,并使其他生物相对于该实体定位自己。如果该实体可以旋转,则相对位置也将旋转。

... oopos ..您已经在这样做了。

那这个呢:

为什么您不能为碰撞的实体计算新位置?我不需要花哨,也许只是从所需的原始点和引线上画一条线,然后将所需的位置移动到这条线的中间。再次测试碰撞。


好吧,这几乎就是我在问题中所说的:D棘手的部分是如何处理地层与地形/障碍物/结构的碰撞
xcrypt

抱歉!我用新的想法更新了我的回复。
2012年

我不明白,您只是将偏移矢量的大小减半,然后继续检查这是否是无碰撞位置?在许多情况下,这很可能会失败
xcrypt
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.