Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Others/SplineWalker.cs

57 lines
956 B
C#
Raw Normal View History

using UnityEngine;
public class SplineWalker : MonoBehaviour
{
public enum SplineWalkerMode
{
Once,
Loop,
PingPong
}
public BezierSpline spline;
public float duration;
public bool lookForward;
public SplineWalkerMode mode;
public float progress;
public bool goingForward = true;
private void Update ()
{
if (goingForward) {
progress += Time.deltaTime / duration;
if (progress > 1f) {
if (mode == SplineWalkerMode.Once) {
progress = 1f;
} else if (mode == SplineWalkerMode.Loop) {
progress -= 1f;
} else {
progress = 2f - progress;
goingForward = false;
}
}
} else {
progress -= Time.deltaTime / duration;
if (progress < 0f) {
progress = -progress;
goingForward = true;
}
}
Vector3 position = spline.GetPoint (progress);
transform.localPosition = position;
if (lookForward) {
transform.LookAt (position + spline.GetDirection (progress));
}
}
}