I thought it would look nice if the Enemy walked whilst patrolling. Currently I’m doing this with two new fields, “walkingSpeed” and “runningSpeed”, which I set directly in the Update() each frame via navMeshAgent.speed depending upon whether PatrolBehaviour() is called or not.

Will we encounter walking in a later tutorial or should I stick to my custom implementation?

1 Like

I was just going to do the same thing, and since I see you never got a reply, I’m going to go ahead an implement now…

This will be covered in a later lecture, but it’s fairly close to what’s described here.

1 Like

I literally was just coming back to this post to say that same thing as I am on that video right now… will be interesting to see if my solution was similar…

I was wondering the same thing and got a nice result, using NavMeshAgent (I don’t know why is not displayed in the comment below)

Added in PatrolBehaviour()
GetComponent().speed = patrolSpeed;

and in AttackBehaviour()
GetComponent().speed = agroSpeed;

It’s not displayed because the software thinks it’s a malformed html tag. Try selecting the code and pressing the button marked </>, or if you’re doing a block of code, you can press the backwards ’ key (next to the 1 on your keyboard, the one you shift to get a ~) three times and press enter. This will put you in “code” mode. Type the same backwards single quote three times again to exit code mode.

Not in Code Mode:
GetComponent().speed = patrollspeed;
In Code Mode:

GetComponent<NavMeshAgent>().speed = patrolspeed;
1 Like

I too felt the patrolling was a bit too energetic, so I made a simple implementation by adding some fields on the Mover component along with some methods.

    [SerializeField] float walkSpeed;
    [SerializeField] float runSpeed;

    public void Run()
        navMeshAgent.speed = runSpeed;

    public void Walk()
        navMeshAgent.speed = walkSpeed;

Then called from the AttackBehaviour / GuardBehaviour methods:

mover.Run(); and mover.Walk();