This package contains fast lightweight solution for local avoidance. It is developed with DOTS in mind, as result it takes advantage of Unity latest technology stack like SIMD mathematics, Jobs and Burst compiler.
Local avoidance allows agent to avoid dynamic obstacles, with accuracy, speed and not requiring pre processing. However keep in mind it does not replace global navigation (etc. A* Pathing solutions) which is designed to find most optimal path around static obstacles. Local avoidance it is intended to be used in complimentary with such a system in full scale game.
At its core it uses novel solution, which is heavily inspired by Starcraft 2 game.
The whole logic is separated into single structure and no components are used. Thus allowing easy integration in any existing Global Pathing system, regardless if it's OOD or DOD.
For this reason this package is highly recommended for people who have coding experience as it is expected from user to integrate the solution into their own ecosystem. There are component ready demos, but they are solely there as examples.
Key Behaviours
Manages navigation out of concave obstacles
Circles target
Avoids head to head moving
Accurately respects radius
Predicts collisions and avoids based on that
Avoids only when necessary
Dependencies
Tested with Unity 2019.4
Package com.unity.mathematics
Package com.unity.collections
Package com.unity.burst
Note: This does not include Global Avoidance which is typical archieved using A* algorithm on data structures like NavMesh or Grid and targeted for static obstacles. Local avoidance typicaly used as complimentary system for it to target dynamic obstacle avoidance.
这个包包含了快速轻量级的本地回避解决方案。它是以DOTS为基础开发的,因此它利用了Unity最新的技术栈,如SIMD数学、Jobs和Burst编译器。
局部规避允许代理避开动态障碍物,准确、快速且不需要预处理。然而,请记住,它并不能取代全局导航(如A*路径解决方案),全局导航的目的是在静态障碍物周围找到最优化的路径。局部规避的目的是在全面游戏中与这种系统一起使用。
它的核心是使用新颖的解决方案,这在很大程度上受到《星际争霸2》游戏的启发。
整个逻辑被分离成单一结构,没有使用任何组件。因此可以很容易地集成到任何现有的全球寻路系统中,不管它是OOD还是DOD。
由于这个原因,我们强烈建议有编码经验的人使用这个软件包,因为我们希望用户能将这个解决方案整合到他们自己的生态系统中。有一些已经准备好的组件演示,但它们只是作为例子存在。
关键行为
管理走出凹形障碍物的导航
绕过目标
避免头对头的移动
准确地尊重半径
预测碰撞,并在此基础上避免碰撞
只在必要时避开
依赖性
在Unity 2019.4中测试
包 com.unity.mathematics
包 com.unity.collection
包 com.unity.burst
注意:这不包括全局规避,全局规避通常在数据结构(如NavMesh或Grid)上使用A*算法进行存档,并针对静态障碍物。局部规避通常作为它的补充系统,针对动态障碍物的规避。
|