Esempio n. 1
0
        private void ShowDirections()
        {
            Handles.color = Color.green;
            Vector3 point = _spline.GetPoint(0.0f);

            Handles.DrawLine(point, point + _spline.GetDirection(0.0f) * directionScale);
            int steps = stepsPerCurve * _spline.CurveCount;

            for (int i = 0; i < steps; i++)
            {
                point = _spline.GetPoint((1 + i) / (float)steps);
                Handles.DrawLine(point, point + _spline.GetDirection((i + 1) / (float)steps) * directionScale);
            }
        }
Esempio n. 2
0
        protected virtual void Update()
        {
            if (goingForward)
            {
                _progress += Time.deltaTime / duration;
                if (_progress > 1.0f)
                {
                    if (mode == SplineWalkerMode.Once)
                    {
                        _progress = 1.0f;
                    }
                    else if (mode == SplineWalkerMode.Loop)
                    {
                        _progress -= 1.0f;
                    }
                    else
                    {
                        _progress    = 2.0f - _progress;
                        goingForward = false;
                    }
                }
            }
            else
            {
                _progress -= Time.deltaTime / duration;
                if (_progress < 0.0f)
                {
                    _progress    = -_progress;
                    goingForward = true;
                }
            }

            Vector3 position = spline.GetPoint(_progress);

            transform.position = position;
            if (lookForward)
            {
                transform.LookAt(position + spline.GetDirection(_progress));
            }
        }