用途:约束 Unity 3D 数学与空间推理的正确性,重点纠正“看起来合理但结果错误”的写法。需要前置技能:unity-scripting(Vector3/Quaternion API)、unity-foundations(Transform、GameObject)、unity-physics(射线检测基础)。
主要能力与正确用法: 坐标空间:位置偏移用 TransformPoint,方向用 TransformDirection(忽略缩放),向量用 TransformVector(含缩放);反向用 InverseTransformPoint、InverseTransformDirection、InverseTransformVector。 四元数顺序:乘法先应用右操作数,“先A后B”写作 A * B,父子关系为 parent * child。 旋转插值:用 Quaternion.Slerp,小角度可用 Quaternion.Lerp;不要直接插值欧拉角,因有万向锁与跳变。 LookRotation:forward 不得为零向量,需加 sqrMagnitude 判断;平行于 up 时会失败。 不要直接改四元数 x/y/z/w 分量,应通过 Quaternion.Euler、AngleAxis、LookRotation 等工厂方法。 浮点比较:用 sqrMagnitude 配合阈值或 Mathf.Approximately、Mathf.Abs,不要用 == 比较累计误差。 Vector3.Angle 恒为正,求转向正负用 Vector3.SignedAngle,符号取决于轴。 叉乘遵循左手系(Y上、Z前),移植右手系数学时需交换顺序或取反轴。 距离比较用 sqrMagnitude 避免开方,sqrRange 应循环外缓存;单次检查无需优化。 Camera.ScreenToWorldPoint 的 z 是距摄像机距离,不是世界 Z;正交相机同样影响深度。 ViewportToWorldPoint 中 z 亦为摄像机距离。 Plane.Raycast 返回 true 才可用 enter,构造 new Plane(normal, distance) 的 distance 为沿法线带符号距离。 Renderer.bounds 是世界空间 AABB,旋转后会变大;精确判断用 Collider.ClosestPoint 或转入局部空间用 Mesh.bounds。 Transform 层级:lossyScale 在含旋转加非均匀缩放时仅为近似;SetParent(parent, true) 保留世界变换,false 保留局部值。
限制:资料未提供安装命令、收费、价格、平台与各 API 完整行为,相关内容暂未提供。