public static Curve2D GetStraightCurve(Vector2 fromPos, Vector2 toPos) { var curve = new Curve2D(); var raycast = Instance.GetViewport().GetWorld2d().DirectSpaceState.Raycast(fromPos, toPos, null, 1); var endPos = raycast?.Position ?? toPos; curve.AddPoint(fromPos); curve.AddPoint(endPos); return(curve); }
public static Curve2D GetPathCurve(Vector2 start, Vector2 end, float handleMagnitude) { var curve = new Curve2D(); if (!IsInstanceValid(Instance)) { return(curve); } var points = Instance._navigation.GetSimplePath(start, end, false); for (int i = 0; i < points.Length; i++) { var point = points[i]; var inVec = Vector2.Zero; var outVec = Vector2.Zero; curve.AddPoint(point, inVec * handleMagnitude, outVec * handleMagnitude); } curve.AddPoint(end); return(curve); }
public void CreateNewPath() { Vector2 currentPos = CurrentPosition; Vector2 currentVel = CurrentVelocity; for (int i = 0; i < PathPoints.Length; i++) { currentVel += VelocityChanges[i]; currentVel += GetGravityForces(currentPos); currentPos += currentVel; PathPoints[i] = currentPos; } PathCurve.ClearPoints(); for (int i = 0; i < PathPoints.Length; i++) { PathCurve.AddPoint(PathPoints[i]); } CurrentVelocity = currentVel; }
private Curve2D CreatePath(Vector2 shooterPos, Vector2 enemyPos) { _curve = new Curve2D(); Vector2 point = new Vector2(); for (int i = 0; i < 11; i++) { var x = (Math.Pow((1 - (0.1 * i)), 2) * shooterPos[0]) + ((2 * (1 - (0.1 * i)) * i / 10) * (Math.Abs(shooterPos[0] - enemyPos[0]) / 2)) + (Math.Pow((0.1 * i), 2) * enemyPos[0]); var y = (Math.Pow((1 - (0.1 * i)), 2) * shooterPos[1]) + ((2 * (1 - (0.1 * i)) * i / 10) * 1) + (Math.Pow((0.1 * i), 2) * enemyPos[1]); point.x = Convert.ToSingle(x); point.y = Convert.ToSingle(y); // GD.Print(point); _curve.AddPoint(point, new Vector2(0, 0)); } // GD.Print(_curve.GetPointCount()); return(_curve); }