void Start() { rbody = GetComponent <Rigidbody>(); wheelTurner = GetComponent <WheelTurner>(); wheelsForward = transform.forward; //steppedWaypoints = new Vector3[waypoints.Length * waypointSteps]; for (int i = 0; i < waypoints.Length; i++) { Vector3 curr = waypoints[i].position; Vector3 next = waypoints[(i + 1) % waypoints.Length].position; int numSteps = 0; // just in case something bad happens, dont eat all of my memory in an infinite loop for (Vector3 w = curr; w != next && numSteps < 100;) { numSteps++; steppedWaypoints.Add(w); if (Vector3.Distance(w, next) > waypointStep + (waypointStep / 5.0f)) { w += (next - curr).normalized * waypointStep; } else { break; } } } for (int i = 0; i < steppedWaypoints.Count; i++) { Vector3 prev = steppedWaypoints[(i - 1 + steppedWaypoints.Count) % steppedWaypoints.Count]; Vector3 curr = steppedWaypoints[i]; Vector3 next = steppedWaypoints[(i + 1) % steppedWaypoints.Count]; Vector3 a = Vector3.Lerp(prev, curr, 0.5f); steppedWaypoints[i] = Vector3.Lerp(a, next, 0.5f); } }
// Use this for initialization void Start() { rbody = GetComponent <Rigidbody>(); wheelTurner = GetComponent <WheelTurner>(); wheelsForward = transform.forward; }