I want my player characters to stop when the target is unreachable.

Please watch this video.

enter image description here

As you can see in this video, the agents don't stop when the target is unreachable.

This is my code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityStandardAssets.Characters.ThirdPerson;
public class PlayerController : MonoBehaviour {
    public Camera cam;
    public NavMeshAgent agent;
    public ThirdPersonCharacter character;
    private LineRenderer linerenderer;
    bool isMoving = true;
    // Start is called before the first frame update
    void Start()
        agent.updateRotation = false;
        linerenderer = GetComponent();
    Vector3 hitPos = Vector3.zero;
    // Update is called once per frame
    void Update()
        if (Input.GetMouseButtonDown(0)) {
            Ray ray = cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit)) {
                agent.destination = (hit.point);
                hitPos = hit.point;

        if (agent.path.status == NavMeshPathStatus.PathInvalid || agent.path.status == NavMeshPathStatus.PathPartial) {
            character.Move(Vector3.zero, false, false);
            agent.velocity = Vector3.zero;
            agent.isStopped = true;
            linerenderer.enabled = false;
        } else {
            character.Move(agent.desiredVelocity, false, false);
            linerenderer.positionCount = agent.path.corners.Length;
            linerenderer.enabled = true;
  • \$\begingroup\$ Why not stop them if the distance traveled in a certain time is lower than a set threshold? \$\endgroup\$
    – Zibelas
    Jun 11 at 21:40
  • \$\begingroup\$ @Zibelas tanx for your response, can you set an example for that? I'll accept that \$\endgroup\$ Jun 12 at 6:13


You must log in to answer this question.

Browse other questions tagged .