unity-Navigation寻路-寻路区域和代价 Navigation Areas and Costs
来源:互联网 发布:苹果有些软件不信任 编辑:程序博客网 时间:2024/05/21 07:09
- 在寻路计算中,每个连通点都有个代价属性,在实施A*时根据代价估算决定这个这点是否丢进个行走路点队列中。
For examples:
如果陆地网格的代价是1,河流代价是5,从 A点 到 B点,同时可以同过连通点 C点(在陆地)和 D点(在河流),那么计算时代价估算时 C点 小于 D点,那么 C点 就会丢进行走路点队列中
如果有道门是禁止通过的,可以标记这个区域 Door,在 行走对象 的寻路代理中设置计算区域忽略这个 Door,则计算连通点的时候,直接忽略到这个区域所有连通点。
2 的效果可以通过 1 的代价值调到很大来达到
效果图
红色区域 代价值为100
红色区域 代价值为1,等于 蓝色区域 的代价值
1. 增加自定区域 Door 和 对应的代价值
在 Navigation 窗口中,增加个 Door,代价值 100
前三个是系统內建值,获取这些值需要 位移 一下才能获取到正确的值,下面有说
问题参考:http://answers.unity3d.com/questions/323005/unity-navmeshsampleposition-failing.html
2. 创建对象,标记为 Door
在场景中创建一个Cube对象,并 选中
在 Navigation 窗口的 Object 中标记该区域为 Door
完成,然后就通过调整代价值来看到不同的寻路效果
如果想 行走对象中,禁止行走 Door 区域,可以在 行走对象 的 Nav Mesh Agent 组件中不够选这个 Door,默认是 Everything
获取当前的区域是否是 Door 区域
代码如下
public void Update() { NavMeshHit navMeshHit; if (NavMesh.SamplePosition(agent.transform.position, out navMeshHit, 0.8f, 1 << NavMesh.GetAreaFromName("Door"))) { Debug.LogFormat("--- agent currMask:{0}", navMeshHit.mask); } }
0 0
- unity-Navigation寻路-寻路区域和代价 Navigation Areas and Costs
- unity-Navigation寻路-基础
- Unity Navigation system自动寻路AI
- Navigation寻路详解
- navigation
- Navigation
- navigation
- Navigation
- Navigation
- Navigation
- navigation
- Navigation
- Navigation
- Navigation
- Unity插件之-Dynamic Navigation系统寻路扩展插件
- unity-Navigation寻路-添加障碍物Obstacle
- Unity:CritterAI与Recast Navigation寻路
- unity navigation 入门
- TVS管的选取 计算
- apkTool反编译
- 拷贝控制与资源管理
- 常用控件属性合集
- 【数据结构】迭代器实现二叉树的中序遍历
- unity-Navigation寻路-寻路区域和代价 Navigation Areas and Costs
- Android Studio 实用快捷键
- cocos2dx项目使用svn注意事项
- maven安装与配置
- 最清晰的Android多屏幕适配方案
- 自己搭建内网服务器
- 单向链表的反向(算法的基础知识)
- 洛谷 P2335 [SDOI2005]位图
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句