Enemy AI patrols between points Script

Guard AI part 2

Tristan Engel
1 min readSep 20, 2021

In this article we will make our guard move between waypoints.

Guard Patrol between Waypoints Pseudocode/logic

if waypoints exist .count > 0 && currenttarget != null

check distance between guard and destination
if the distance is less than 1 unit

if currenttarget == waypoints.count
turn on reverse
if currenttarget == 0
turn off reverse

if reverse is off increment currenttarget
if reverse is on then decrease currenttarget

set destination to current target

Guard Patrol between Waypoints Code

private NavMeshAgent _agent;
public List<Transform> waypoints;
private int currentTarget = 0;
private bool _isReverse = false;
void Start ()
{
_agent = GetComponent<NavMeshAgent>();
}

void Update ()
{
if (waypoints.Count > 0 && waypoints[currentTarget] != null)
{
float distance = Vector3.Distance(transform.position, waypoints[currentTarget].position);
if (distance < 1)
{
if (currentTarget >= waypoints.Count - 1)
{
_isReverse = true;
}
else if (currentTarget <= 0)
{
_isReverse = false;
}
if (_isReverse == true)
{
currentTarget--;
}
else if (_isReverse == false)
{
currentTarget++;
}
}
_agent.SetDestination(waypoints[currentTarget].position);
}
}

--

--

Tristan Engel

Aspiring developer that’s self-learning Unity & C# to transition to a career with Unity. I got a passion for creating interactive experiences.