NavMesh上下台阶, 斜坡, 跨越,跳下
# 这几个都是在Bake页签上的下面几个参数控制的,生成好寻路数据后,其他的都不需要我们处理
上下台阶参数:Step Height: 能走过的台阶高度
斜坡参数:Max Slope: 超过多少坡度就爬不上去
跨越参数:Jump Distance: 不超过多少米可以跨越(不然跨不过去)
跳下参数:Drop Height: 不超过多少米可以跳下(不然太危险)
# ground1为左1紫色地面,ground2为左2绿色地面,ground3为上面紫色斜坡开始,ground4为下面蓝色斜坡开始
# ground1, ground3_1, ground4_1勾选了Generate OffMeshLinks

# 注意
(#) A跳过去到B(A要勾上OffMeshLink), 如果要能从B跳回来到A(B要勾上OffMeshLink)
(#) C要能跳下到D上(C要勾上OffMeshLink),同时OffMeshLink只会处理跳下去, 没法跳上来, 跳上来可以用stepHeight来处理(不过要设置的很大,不符合正常规律), 或者加OffMeshLink来处理
# origin上的控制代码
public class NavMeshTest : MonoBehaviour { public NavMeshAgent _agent; public Transform _capsule; void Update() { if (Input.GetMouseButton(0)) { RaycastHit hit; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); //摄像机方向发射1条射线 Debug.DrawRay(ray.origin, ray.direction * 20, Color.yellow); //画出这条射线 var maxDistance = 50; if (Physics.Raycast(ray, out hit, maxDistance)) //检测射线是否碰到地面 { _capsule.position = hit.point; _agent.destination = hit.point; Debug.DrawLine(ray.origin, hit.point, Color.red); } } } }
# ground1可以跨越到ground2,但是ground2回不到ground1(因为ground2没勾OffMeshLink)
# ground3_1可以跳下到ground3_2上,但是没法再跳上来
# ground4_1没法跳下到ground4_2上,因为高度太高了,超过了Drop Height设置的3.01米
【参考】
unity自带寻路Navmesh入门教程(二)_阿赵3D的博客-CSDN博客
Unity NavMesh (导航网格)初探 - 简书 (jianshu.com)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性