Unity中的CustomNavMesh系统: 让AI代理更智能地避开其他代理

Ray

CustomNavMesh简介

CustomNavMesh是一个为Unity开发的第三方寻路系统,旨在解决原生NavMesh系统中AI代理无法避开其他静止代理的问题。它通过巧妙地结合使用NavMeshAgent和NavMeshObstacle组件,实现了代理之间的智能避让,使得场景中的AI行为更加真实自然。

为什么需要CustomNavMesh?

在Unity的原生NavMesh系统中,AI代理只会避开NavMeshObstacle,而忽视路径上的其他代理。这导致了一些不自然的行为,比如代理之间的相互穿透。CustomNavMesh通过在代理停止移动时将其切换为障碍物,解决了这一问题,使得场景中的AI移动更加合理。

CustomNavMesh的工作原理

CustomNavMesh的核心思想是动态地切换代理的状态。具体来说:

  1. 当一个代理停止移动时,系统会禁用其NavMeshAgent组件,同时启用NavMeshObstacle组件。
  2. 这使得其他移动中的代理会将静止的代理视为障碍物,从而绕开它。
  3. 当代理重新开始移动时,系统会切换回NavMeshAgent状态。

为了实现更复杂的功能,如允许代理之间的相互推挤,CustomNavMesh采用了以下策略:

  • 复制场景中的导航网格表面、障碍物和代理。
  • 使复制的代理在NavMeshAgent和NavMeshObstacle之间切换,而不是原始代理。
  • 让原始代理复制复制代理的速度,复制代理则复制原始代理的位置。

这种方法使得系统能够在保持原有功能的同时,实现更加复杂和自然的AI行为。

CustomNavMesh工作原理示意图

CustomNavMesh的主要组件

CustomNavMesh系统包含以下几个主要组件,它们都是对Unity原生组件的替代:

  1. CustomNavMeshSurface: 用于烘焙导航网格的表面。需要注意的是,这个组件只处理渲染网格,而忽略物理碰撞器和地形。

  2. CustomNavMeshObstacle: 替代原生的NavMeshObstacle,用于表示场景中的静态障碍物。

  3. CustomNavMeshAgent: 替代原生的NavMeshAgent,用于控制AI代理的移动。它具有一些额外的属性:

    • Block after Duration: 设置代理在低速移动一段时间后是否应该切换为障碍物状态。
    • Unblock after Duration: 控制代理是否应该定期尝试寻找更短的路径并解除阻塞状态。
    • Unblock at Speed: 设置代理超过某个速度阈值时是否应该解除阻塞状态。
  4. CustomNavMesh: 这是整个系统的核心类,允许开发者控制隐藏游戏对象的相对位置以及是否渲染它们。

使用CustomNavMesh的优势

  1. 更自然的AI行为: 通过让代理能够避开静止的其他代理,CustomNavMesh创造了更加真实和自然的场景动态。

  2. 灵活的配置: CustomNavMesh提供了多个可调节的参数,允许开发者根据具体需求微调AI行为。

  3. 与Unity原生系统兼容: CustomNavMesh设计为与Unity的NavMeshComponents兼容,使得集成过程更加简单。

  4. 支持代理间的物理交互: 与原生系统不同,CustomNavMesh允许移动的代理推动静止的代理,增加了场景的互动性。

代理交互示例

如何在Unity项目中使用CustomNavMesh

要在你的Unity项目中使用CustomNavMesh,请按照以下步骤操作:

  1. 从GitHub仓库克隆或下载CustomNavMesh项目。
  2. Assets/CustomNavMesh文件夹的内容复制到你的Unity项目中。
  3. 在场景中使用CustomNavMeshSurface组件替代NavMeshSurface。
  4. 将AI代理的NavMeshAgent组件替换为CustomNavMeshAgent。
  5. 将场景中的NavMeshObstacle替换为CustomNavMeshObstacle。

注意:CustomNavMesh项目使用Unity 2022.3 LTS版本开发,已在PC独立版、Android和WebGL平台上测试通过。

CustomNavMesh的性能考虑

尽管CustomNavMesh提供了更加智能的AI行为,但它也带来了一些性能开销。每个NavMesh组件都被复制了一份,这可能会影响性能。然而,在大多数情况下,这种性能影响是微不足道的,不会对游戏体验造成明显影响。

未来展望

CustomNavMesh的开发者计划在未来实现以下功能:

  1. 利用Unity的新实验性NavMeshQuery操作和作业系统,提高性能。
  2. 从原始NavMesh组件中导入更多方法和属性。
  3. 为NavMeshComponents的组件创建自定义版本。

这些改进将进一步增强CustomNavMesh的功能和性能,使其成为更加强大的AI导航工具。

结语

CustomNavMesh为Unity开发者提供了一个强大的工具,用于创建更加智能和自然的AI行为。通过巧妙地结合Unity原生的导航系统组件,CustomNavMesh解决了传统NavMesh系统中的一些局限性,为游戏和模拟环境中的AI代理带来了更加真实的交互。

虽然CustomNavMesh可能会带来轻微的性能开销,但其带来的游戏体验提升通常是值得的。对于需要高度真实AI行为的项目来说,CustomNavMesh无疑是一个值得考虑的选择。

随着开发者持续改进和扩展CustomNavMesh的功能,我们可以期待看到更多令人兴奋的应用场景。无论你是在开发复杂的策略游戏、拥挤的城市模拟还是需要精确AI控制的任何项目,CustomNavMesh都能为你提供所需的工具和灵活性。

如果你在使用CustomNavMesh时遇到任何问题或有任何建议,别忘了可以直接联系项目的开发者。开源社区的力量在于不断的反馈和改进,你的参与可能会帮助CustomNavMesh变得更好!

最后,让我们期待CustomNavMesh的未来发展,它无疑将继续为Unity开发者提供更加强大和灵活的AI导航解决方案。🚀🎮

avatar
0
0
0
最新项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号