I want my player characters to stop when the target is unreachable.
Please watch this video.
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;
agent.ResetPath();
linerenderer.enabled = false;
} else {
character.Move(agent.desiredVelocity, false, false);
linerenderer.positionCount = agent.path.corners.Length;
linerenderer.SetPositions(agent.path.corners);
linerenderer.enabled = true;
}
}
}