private Vector3 GetVelocity(float t)
        {
            int i;

            if (t >= 1f)
            {
                t = 1f;
                i = points.Length - 4;
            }
            else
            {
                t  = Mathf.Clamp01(t) * CurveCount;
                i  = (int)t;
                t -= i;
                i *= 3;
            }

            return(transform.TransformPoint(BezierUtility.GetFirstDirective(
                                                points[i], points[i + 1], points[i + 2], points[i + 3], t)) - transform.position);
        }
        public Vector3 GetPoint(float t)
        {
            int i;

            if (t >= 1f)
            {
                t = 1f;
                i = points.Length - 4;
            }
            else
            {
                t  = Mathf.Clamp01(t) * CurveCount;
                i  = (int)t;
                t -= i;
                i *= 3;
            }

            return(transform.TransformPoint(BezierUtility.GetPoint(
                                                points[i], points[i + 1], points[i + 2], points[i + 3], t)));
        }
 private Vector3 GetVelocity(float t)
 {
     return(transform.TransformPoint(BezierUtility.GetFirstDirective(points [0], points [1], points [2], points[3], t)) -
            transform.position);
 }
 public Vector3 GetPoint(float t)
 {
     return(transform.TransformPoint(BezierUtility.GetPoint(points[0], points[1], points[2], points[3], t)));
 }