Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
    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;
    }
Пример #4
0
    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);
    }