Waypoint/Animation help

Hey,

Maybe someone can help me out.
hope i can explain this correctly.
I’ve got a waypoint script attached to my model with 3 waypoints set up. When the model is moving to the waypoints it is playing animation “Walk” and when it reached the waypoint it stays there for a few seconds and plays the animation “Pondering”, but what i actually want is that it doesnt play animation “pondering” at every waypoint only at waypoint 3 so basically i want the model to walk through waypoint 1 and 2 and then at waypoint 3 play “pondering”.
How could i do this?
I’m a bit lost at the moment.

Thanks in advance.

This is the script so far:

var waypoint : Transform;

var speed : float = 0.5;

var currentWaypoint : int;

var loop = true;

var test;

function Update () {

animation.wrapMode = WrapMode.Loop;



if(currentWaypoint < waypoint.length){



var target : Vector3 = waypoint[currentWaypoint].position;    

var moveDirection : Vector3 = target - transform.position;        

var velocity = rigidbody.velocity;



if(moveDirection.magnitude <= 0.2){

        test = true;

    print("magniute");

    animation.CrossFade("pondering");

    speed = 0;

    if(test){

            WaitThreeSeconds();

    currentWaypoint++;

    }        

}

else{

            if(!test){

    animation.CrossFade("walk");

    speed = Random.Range(0.5,0.5);

    RotateTowards();

            }

}

}

    velocity = moveDirection.normalized * speed;

    rigidbody.velocity = velocity;

}

function RotateTowards () {

var target : Vector3 = waypoint[currentWaypoint].position;

var moveDirection : Vector3 = target - transform.position;

while(Vector3.Distance(target, transform.position) >= 1.5){

transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(moveDirection), 1.5* Time.deltaTime);

transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);

yield;

}

}

function WaitThreeSeconds(){

yield WaitForSeconds(2.6);

test = false;

}

In your:

if(moveDirection.magnitude <= 0.2){

    test = true;

    print("magniute");

    animation.CrossFade("pondering");

    speed = 0;

    if(test){

            WaitThreeSeconds();

    currentWaypoint++;

    }        
}

Only play the pondering animation and only wait 3 seconds if currentWaypoint == 2 (this will be waypoint 3 as you described just arrays are 0-index based). Otherwise, for the other waypoints, just increment your counter and continue walking. Good luck and hope this helps.

if(moveDirection.magnitude <= 0.2){

    test = true;

    print("magniute");

    // here the player will change animations and wait
    // otherwise, it will just increment the counter and continue walking.
    if(currentWayPoint == 2) {
        animation.CrossFade("pondering");
        WaitThreeSeconds();
    }

    speed = 0;     

    currentWaypoint++;

        
}