using ColdMint.scripts.debug; using Godot; namespace ColdMint.scripts.utils; /// /// ParabolicUtils /// 抛物线工具 /// public class ParabolicUtils { /// /// Calculated parabola /// 计算抛物线 /// /// ///Origin of coordinates ///坐标的原点 /// /// ///speed ///速度 /// Represents the distance traveled per second /// 表示每秒移动的距离 /// /// ///gravity ///重力 /// /// ///Sampling step size ///采样步长 /// How many seconds to take a point /// 多少秒取一次点 /// /// public static Vector2[] ComputeParabolic(Vector2 origin, Vector2 velocityVector, float gravity, float steps) { // 计算采样点数量 var numSteps = Mathf.CeilToInt(1f / steps); // 初始化结果数组 var points = new Vector2[numSteps]; // 计算每个采样点的位置 for (int i = 0; i < numSteps; i++) { // 计算当前时间 var t = i * steps; // 计算当前位置 var x = origin.X + velocityVector.X * t; var y = origin.Y + velocityVector.Y * t + 0.5f * gravity * t * t; // 将位置添加到结果数组中 points[i] = new Vector2(x, y); } return points; } }