Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
 // Use this for initialization
 void Start()
 {
     rbody         = GetComponent <Rigidbody>();
     wheelTurner   = GetComponent <WheelTurner>();
     wheelsForward = transform.forward;
 }