Questions tagged «collision-avoidance»

2
以视觉上吸引人且直观的方式传播标签的算法
简洁版本 是否存在一种设计模式,用于以不重叠的方式分配车辆标签,并使其尽可能靠近其所指的车辆?如果没有,我建议的任何一种方法可行吗?您将如何自己实施? 扩大的视野 在我写的游戏中,我对空中载具有鸟瞰图。在每辆车旁边,我还带有一个小标签,上面标有有关该车的关键数据。这是一个实际的屏幕截图: 现在,由于车辆可能在不同的高度飞行,它们的图标可能会重叠。但是,我永远都不要让它们的标签重叠(或者,车辆“ A”的标签与车辆“ B”的图标重叠)。 目前,我可以检测到小精灵之间的碰撞,并且只需沿与否则重叠的小精灵相反的方向推开有问题的标签即可。这在大多数情况下都可行,但是当空域变得拥挤时,即使有其他“更智能”的选择,标签也可能被推离其飞行器很远。例如我得到: B - label A -----------label C - label 在哪个地方会更好(=标签离车辆更近): B - label label - A C - label 编辑:还必须考虑到,在重叠车辆的情况下,可能还有其他配置,其中车辆的标签可能会重叠(例如ASCII艺术示例显示了三辆非常接近的车辆,其中的标签A会与的图标重叠B和C)。 我有两个关于如何改善当前状况的想法,但是在花时间实施它们之前,我曾想过向社区征询建议(毕竟,这似乎是一个“常见的问题”,可能存在一种设计模式)。 对于它的价值,这是我在想的两个想法: 标签空间的插槽化 在这种情况下,我会将所有屏幕划分为标签的“插槽”。然后,每辆车始终将其标签放置在最近的空车上(空=该位置没有其他精灵。 螺旋搜索 从屏幕上车辆的位置开始,我将尝试将标签以递增的角度放置,然后以递增的半径放置,直到找到不重叠的位置。在以下方面: try 0°, 10px try 10°, 10px try 20°, 10px ... try 350°, 10px try 0°, 20px try …

1
如何使用SAT解决复合形状的碰撞?
SAT是确定任意凸多边形之间的碰撞的一种不错的方法。您甚至可以获得解决冲突所需的向量。 为了解决复杂(非凸)形状之间的碰撞,我正在考虑某种由多个凸多边形组成的复合形状。如果在宽相中发生碰撞(例如,圆与圆或AABB与AABB),则可以通过检查复合形状中的每个多边形与其他复合形状中的每个多边形来解决冲突。 我想知道实际上分离对象的最佳方法是什么?幼稚的方法是仅取最大幅度的向量并将其用于分离。在下图中,这将是V 2 但是,如果分离向量指向不同的方向,则无法立即解决碰撞,可能需要多次迭代。因此,在下一张图片中,我们将使用V 1进行分离,并在另一个迭代中使用V 2(或接近V 2的形状,因为形状将移动V 1的量)。 这种方法将无法分离指向彼此相反方向的向量,或者在如下图所示的情况下: 在这里,我们将在左侧的状态和右侧的状态之间无休止地进行迭代。 因此,在这里提出一个实际的问题:解决这个问题的合理方法是什么?我想将复合多边形用于复杂形状是一个合理的想法,但我真的很想知道在这种情况下应如何解决碰撞?如第三张图片所示,如何检测死角?

4
RTS本地回避如何完成?
当前,我正在模拟物理冲击力以局部避开单位,但是这种方法有时会将单位推离地层,并且当单位结块时会产生非常不利的影响。 对于像《星际争霸2》这样的RTS游戏,如何进行局部回避?是物理模拟还是全能控制器决定一切应该在哪里?我知道这个问题可能有点笼统,所以我专门问如何实现《星际争霸2》的局部回避行为。尽管任何有效的方法都将不胜感激。 我不是在寻找任何代码-只是有用的资源或有关Starcraft 2(或类似游戏)如何处理本地回避的解释。 目前,我已经实现了碰撞检测(带有穿透向量),碰撞力和速度移动。检查每个单元是否相互碰撞-如果它们发生碰撞,则物体会立即被渗透矢量偏移,然后施加碰撞力。然后,另一个循环按其速度移动对象,并将阻力施加到该速度。偏移减轻了施加在结块单元上的过大碰撞力的问题,但是单元有时仍会射出。 我正在寻找的解决方案需要满足以下要求(例如在Starcraft 2中): 对象不会重叠;至少必须解决重叠问题。 物体不会将彼此推开超过必要的距离,因此2个单位可以在一个编队中直立并相互靠近。 当对象聚集到同一目的地时,不应有任何奇怪的行为。 可以支撑不同尺寸甚至不同凸面形状的单元。 到目前为止,我一直在思考的不是检测冲突,而是检测将来的冲突,这样就不会发生重叠。然后应用约束,确保2个单位的速度不会导致它们重叠。我仍然在修改限制重叠之外的移动的算法。

2
在类似《魔兽争霸3》的游戏中寻找障碍物
考虑在基于图块的地图上进行A *搜索。直接的代码是:如果该单元格中有一个单元,则该单元不可访问,可以。 但是存在地图分辨率问题。当我研究《魔兽争霸3》时,那里的怪物和建筑物确实具有不同的半径,并且您可以走得很近,这更像是基于矢量的,这是如何实现的? 另外,将移动障碍物碰撞检测与路径查找算法(例如Warcraft 3)结合起来的标准解决方案是什么?
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.