问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity3D A*寻路插件使用详解:从地形到2D场景的全方位案例解析

创作时间:
作者:
@小白创作中心

Unity3D A*寻路插件使用详解:从地形到2D场景的全方位案例解析

引用
CSDN
1.
https://blog.csdn.net/qq_39574690/article/details/122809586

A寻路算法是游戏开发中常用的路径规划算法,能够帮助游戏中的角色智能地寻找到达目标点的最优路径。本文将详细介绍Unity3D中的A寻路插件A* Pathfinding Project的使用方法,通过多个具体案例帮助读者快速掌握该插件的核心功能和应用场景。

案例1:地形寻路(Example2场景)

在该场景中,展示了如何在地形上进行动态网格生成和寻路。需要为可移动的Cube添加相应的组件,并支持实时更新导航网格。

注意事项:

  • mine_bot_render预制体需要设置AnimatorController(资源名:mine_bot)
  • Bot物体的MineBotAnimation脚本需要赋值mine_bot_render物体的AnimatorController
  • EndOfPathEffect是移动结束后创建的特效预制体,可以不填,如果填了要自己管理销毁特效

案例2:点图寻路(PointGraphExample场景)

该场景演示了在3D场景中使用少量节点进行寻路的方法。通过PointGraph实现点到点的寻路功能。

关键设置:

  • Recursive:勾选后所有子节点都作为寻路节点,否则只会选择第一层子节点
  • Max Distance:设置子节点之间允许通过的最大距离
  • 扫描:勾选并点击Scan按钮可以查看辅助线条

案例3:导航网格寻路(NavMeshExample场景)

该场景展示了如何手动修复缺少的网格并生成导航网格。运行后,可以通过双击地面来指定起点和终点进行寻路。

操作步骤:

  • 缺少mesh时需要手动填上并点击Fix按钮
  • 根据网格生成导航网格
  • 运行后,双击地面进行开始寻路

案例4:惩罚区域寻路(PenaltiesExample场景)

该场景演示了如何设置可通行和不可通行区域,以及如何让不同角色对同一区域有不同的通行策略。

核心参数:

  • Points:区域的顶点参数数据
  • TagValue:标签值,用于设置小怪的脚本
  • Traversable:勾选表示可越过该区域,取消勾选则为不可越过区域

案例5:程序化生成场景寻路(Procedural场景)

该场景展示了如何在动态生成的场景中实现A*寻路。通过按块生成地形,并在移动一定距离后刷新导航网格。

刷新机制:

  • 通过graph.RecalculateCell方法刷新网格
  • 具体实现可以查看源码

案例6:2D场景寻路

该场景演示了如何在2D场景中使用A*寻路插件。需要开启2D模式和2D物理检测,并设置碰撞检测模式为Point模式。

关键设置:

  • 勾选2D和Use 2D physics
  • 开启Collision testing
  • 设置模式为Point模式,层级为Default
  • 需要确保Obstacles下的SpriteRenderer的Sprite不为Null,可以设置一个格子图片

通过以上六个案例的详细讲解,相信读者已经掌握了A* Pathfinding Project插件的主要功能和使用方法。该插件提供了丰富的寻路解决方案,能够满足不同类型游戏场景的需求。希望这些内容能帮助开发者更好地利用A*寻路算法优化游戏中的角色移动逻辑。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号