mcpField
U
unity-navmesh

unity-navmesh

github.com/besty0728开发1.9k83 次安装1 天前更新
代码仓库

关于 unity-navmesh

unity-navmesh 是面向 Unity 项目的导航技能模块,可烘焙 NavMesh、计算路径并配置 Agent 与障碍物。它还提供位置采样和区域成本设置。

主要功能

  1. 01烘焙或清除 NavMesh
  2. 02计算路径并返回路点
  3. 03查找 NavMesh 上的最近位置
  4. 04添加和配置 Agent 与障碍物
  5. 05获取构建设置并设置区域成本

适用场景

  1. 01为场景生成或重新烘焙导航数据
  2. 02检查两点之间的路径是否有效
  3. 03将对象设为 NavMeshAgent 或障碍物
  4. 04调整导航区域通行成本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-navmesh

安装后在 Claude Code 中输入/unity-navmesh确认已加载。

详细介绍

**在调用本模块中的任何 skill 之前:**如果你打算根据 skill 的名称或描述猜测参数后调用该 skill,请停止——先阅读此文件(或通过 GET /skills/recommend?includeSchema=true 获取其 schema)。如果你已从 recommend/schema 中获取参数定义,则可直接执行 dryRun。

触发条件

  • 设置导航
  • 烘焙 NavMesh
  • 测试 Agent 路径
  • 调整烘焙参数
  • 搭建导航、烘焙 NavMesh、测试 Agent 路径、调整烘焙参数

NavMesh Skills

烘焙/清除 NavMesh 数据、计算路径、采样位置,以及配置 NavMeshAgent/NavMeshObstacle 组件。

运行模式

  • Approval:查询类 skill(navmesh_calculate_path/navmesh_sample_position/navmesh_get_settings,源码标记为 SkillMode.SemiAuto)直接执行;变更类(navmesh_bake/navmesh_add_agent/navmesh_set_agent/navmesh_add_obstacle/navmesh_set_obstacle/navmesh_set_area_cost,标记为 SkillMode.FullAuto)需用户 grant,grant 后由服务端一步执行并返回结果。
  • Auto / Bypass:所有未被禁止列表拦截的 skill 直接执行。
  • 本模块包含 Delete 类 skill:navmesh_clear 标记为 SkillOperation.Delete,会被 IsForbiddenInSemi 静态拦截——仅在 Bypass 模式下或将其加入 Allowlist 后才能调用。
  • navmesh_bake 会同步阻塞主线程;大型场景可能很慢,调用前请提醒用户。

请勿(常见臆造):

  • navmesh_create 不存在 → 使用 navmesh_bake 生成 NavMesh
  • navmesh_add_agent_component/navmesh_set_agent_speed 不存在 → 使用 navmesh_add_agent + navmesh_set_agent(便捷封装),或使用 component_add/component_set_property 进行完整控制
  • 场景几何发生变化后,必须重新烘焙 NavMesh

路由:

  • 对于 NavMeshAgent/NavMeshObstacle 组件 → 使用 component 模块
  • 对于路径计算 → 使用 navmesh_calculate_path(本模块)

Skills

navmesh_bake

烘焙 NavMesh(同步)。警告:会阻塞 Editor,大型场景可能耗时较长。 **参数:**无。

navmesh_clear

清除 NavMesh 数据。 **参数:**无。

navmesh_calculate_path

计算两点之间的路径。 参数:

  • startX、startY、startZ(float):起始位置。
  • endX、endY、endZ(float):结束位置。
  • areaMask(int,可选):NavMesh 区域遮罩。

返回值:{ status, valid, distance, cornerCount, corners }

  • status:NavMeshPathStatus 字符串(PathComplete/PathPartial/PathInvalid)
  • valid:仅当 status == "PathComplete" 时为 true
  • distance:路径总长度(路径无效时为 0)
  • cornerCount:corners 中转角点的数量
  • corners:{x, y, z} 路径点数组(无路径时为空)
navmesh_add_agent

向对象添加 NavMeshAgent 组件。

参数类型必填默认值描述
namestring否nullGameObject 名称
instanceIdint否0GameObject 实例 ID
pathstring否nullGameObject 层级路径

返回值:{ success, gameObject }

navmesh_set_agent

设置 NavMeshAgent 属性(speed、acceleration、radius、height、stoppingDistance)。

参数类型必填默认值描述
namestring否nullGameObject 名称
instanceIdint否0GameObject 实例 ID
pathstring否nullGameObject 层级路径
speedfloat否nullAgent 移动速度
accelerationfloat否nullAgent 加速度
angularSpeedfloat否nullAgent 角速度
radiusfloat否nullAgent 半径
heightfloat否nullAgent 高度
stoppingDistancefloat否null在目标前停止的距离

返回值:{ success, gameObject, speed, radius }

navmesh_add_obstacle

为对象添加 NavMeshObstacle 组件。

参数类型必填默认值描述
namestring否nullGameObject 名称
instanceIdint否0GameObject 实例 ID
pathstring否nullGameObject 层级路径
carvebool否true启用挖刻

返回: { success, gameObject, carving }

navmesh_set_obstacle

设置 NavMeshObstacle 属性(形状、大小、挖刻)。

参数类型必填默认值描述
namestring否nullGameObject 名称
instanceIdint否0GameObject 实例 ID
pathstring否nullGameObject 层级路径
shapestring否null障碍物形状(例如 Box、Capsule)
sizeXfloat否null障碍物大小 X
sizeYfloat否null障碍物大小 Y
sizeZfloat否null障碍物大小 Z
carvingbool否null启用挖刻

返回: { success, gameObject, shape, carving }

navmesh_sample_position

查找 NavMesh 上最近的点。

参数类型必填默认值描述
xfloat是-源位置 X
yfloat是-源位置 Y
zfloat是-源位置 Z
maxDistancefloat否10最大搜索距离

返回: { success, found, point: { x, y, z }, distance }

navmesh_set_area_cost

设置区域遍历成本。

参数类型必填默认值描述
areaIndexint是-NavMesh 区域索引
costfloat是-遍历成本值

返回: { success, areaIndex, cost }

navmesh_get_settings

获取 NavMesh 构建设置。

参数: 无。

返回: { success, agentRadius, agentHeight, agentSlope, agentClimb }


精确签名

精确名称、参数、默认值和返回值由 GET /skills/schema 或 unity_skills.get_skill_schema() 定义,而非此文件。

评论

支持 Markdown