SuperAPI AI 工具集

math-essentials

编程与开发

查看项目

更新于 10-15 22:40

技能介绍

用途:在 Godot 4.3+ 游戏开发中处理常见数学问题,示例以 GDScript 在前、C# 在后的对照形式给出,不含已废弃 API。

主要能力: 一、向量运算。包含 length()、length_squared()、normalized()、distance_to()、distance_squared_to()、direction_to()、angle_to()、angle_to_point()、dot()、cross()(2D 返回 float,3D 返回 Vector3)、rotated()、move_toward()、clamp()、snapped()、reflect()、bounce()、slide()。点积用于判断目标在前或在后,叉积用于由两条边向量求表面法线。比较距离时建议用 distance_squared_to 避免开方。 二、变换。Transform2D 保存位置、旋转与缩放,可用 to_local()/to_global() 转换局部与全局空间,用 affine_inverse() 求逆变换。Transform3D 的 basis 以三个列向量保存旋转与缩放:forward 为 -basis.z(Godot 以 -Z 为前方),right 为 basis.x,up 为 basis.y;可用 look_at()、rotate_y()、rotate_object_local(),以及 interpolate_with() 在两个变换间插值。Godot 4.7+ 提供 Basis.is_orthonormal(),配合 orthonormalized() 在漂移后校正。 三、插值。lerp 用于线性插值,lerp(a, b, speed * delta) 属帧率相关且不会真正到达目标;需要精确到达用 move_toward();旋转用 slerp(),角度插值用 lerp_angle() 以避免 180° 跳变;smoothstep 用于柔和阈值(如雾浓度);cubic_interpolate 用四个控制点做平滑路径跟随。 四、曲线与路径。Curve 资源表示随时间变化的数值(如伤害衰减);Path2D/Path3D 提供空间路径,由 PathFollow2D/PathFollow3D 采样,用于移动平台、导弹制导、相机轨道。 五、随机数。一次性随机可用 randf()、randi() % N、randf_range(a, b);需要可复现随机用 RandomNumberGenerator 并 randomize() 或固定种子;加权选择可用累积和或别名法;程序化生成可用 FastNoiseLite。 六、常见配方。看向目标、绕点环绕(极坐标)、正弦上下浮动、角度归一化到 -PI..PI、带死区的钳制靠近。

适用场景:玩家控制器移动、寻路、相机插值、补间缓动、碰撞等需要数学支撑的模块。

限制与注意事项:lerp 平滑跟随不会精确到达;角度务必用 lerp_angle;三维前方是 -basis.z;归一化零向量前需检查长度;三维旋转插值用四元数 slerp 而非欧拉角;使用固定种子的 RandomNumberGenerator 会导致重启后随机结果重复;FastNoiseLite 频率过低时噪声值接近 0,可尝试 0.01–0.1。具体 Curve、Path 与随机数的完整代码见资料引用的参考文件。