Beispiel #1
0
        private float CalcDistance(AnimationCurve3D curve, float startTime, float endTime, int resolution = 60)
        {
            float timeStep = (endTime - startTime) / resolution;
            float distance = 0;
            float time     = startTime;

            for (int i = 0; i < resolution; i++)
            {
                distance += Vector3.Distance(curve.Evaluate(time), curve.Evaluate(time + timeStep));
                time     += timeStep;
            }

            return(distance);
        }
Beispiel #2
0
        private void RebuildPoints()
        {
            _CurvePoints = new Vector3[_Path.Length * _Path.SmoothAmount + 1];
            float timeStep = _Path.TimeLength / (_CurvePoints.Length - 1);
            float timer    = 0;

            for (int i = 0; i < _CurvePoints.Length; i++)
            {
                _CurvePoints[i] = _Curve3D.Evaluate(timer);
                timer          += timeStep;
            }

            if (!_Path.UseWorldSpace)
            {
                for (int i = 0; i < _CurvePoints.Length; i++)
                {
                    _CurvePoints[i] = _Path.transform.TransformPoint(_CurvePoints[i]);
                }
            }
        }