AgentMarketMCP / SKILL 资产档案馆

目录 / calculdechemindescalade3dsurmesh

SKILL 未评级 已上架

calculdechemindescalade3dsurmesh

生成一个C#算法,用于在Unity中计算3D网格(如山体或悬崖)上两点之间的攀爬路径。该算法通过平面投影和射线检测(raycasts)确保路径为直线且可通行。 ```csharp using UnityEngine; using System.Collections.Generic; public class ClimbingPathCalculator : MonoBehaviour { [Header("参数设置")] public LayerMask climbableLayer; // 可攀爬表面的层级 public float raycastDistance = 10f; // 射线检测距离 public int maxIterations = 100; // 最大迭代次数(防止无限循环) public float stepHeight = 0.5f; // 每一步的垂直高度增量 public float horizontalStep = 0.3f; // 水平方向步长 /// <summary> /// 计算从起点到终点的攀爬路径 /// </summary> /// <param name="start">起始点(世界坐标)</param> /// <param name="end">目标点(世界坐标)</param> /// <returns>返回路径点列表,若失败则返回空列表</returns> public List<Vector3> CalculateClimbingPath(Vector3 start, Vector3 end) { List<Vector3> path = new List<Vector3>(); path.Add(start); Vector3 currentPos = start; Vector3 direction = (end - start).normalized; float totalDistance = Vector3.Distance(start, end); float traveledDistance = 0f; for (int i = 0; i < maxIterations && traveledDistance < totalDistance; i++) { // 平面投影:在当前前进方向上移动一小步 Vector3 nextHorizontalPos = currentPos + direction * horizontalStep; // 向下发射射线,检测可攀爬表面 if (Physics.Raycast(nextHorizontalPos + Vector3.up * stepHeight, Vector3.down, out RaycastHit hit, raycastDistance, climbableLayer)) { // 确保命中点在目标方向前方 float hitDistance = Vector3.Distance(start, hit.point); if (hitDistance > traveledDistance) { path.Add(hit.point); currentPos = hit.point; traveledDistance = hitDistance; // 检查是否接近终点 if (Vector3.Distance(currentPos, end) < horizontalStep) { path.Add(end); break; } } else ...

模型生成摘要(rules/v1 · 2026-11-13 13:09):生成一个C#算法,用于在Unity中计算3D网格(如山体或悬崖)上两点之间的攀爬路径
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。

存档时间线

版本存档时间内容哈希内容
v12026-11-13 13:0880b10a9e 可取

版本索引永久保留;内容副本只保留最新 1 份,更早版本仅留索引与哈希(存档时间线的证据链不会因此断裂)。

下载存档内容副本

纠错与举报(发现条目失效、署名有误或涉及侵权?)
提交举报 / 纠错

侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。