- Home /
how to stop agent when target is unreachable unity
hello everybody
i want my player characters stop when target is unreachable.
plaese watch this video.
as you can see in this video, the agents don't stop when target is unreachable
and this is my simple 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;
}
} }
Answer by TobinCavanaugh123 · yesterday
@mojtaba_unity You could try using NavMeshAgent.hasPath: https://docs.unity3d.com/ScriptReference/AI.NavMeshAgent-hasPath.html Idk if it works but it might help
Edit: Either that or NavMeshAgent.path.status https://docs.unity3d.com/ScriptReference/AI.NavMeshPath-status.html
@TobinCavanaugh123 tanx for your response, I used NavMeshAgent.hasPath and NavMeshAgent.path.status togather but it doesn't work for me. is there any other way to solve the problem?
Your answer
Follow this Question
Related Questions
NavMeshAgent Teleporting when SetDestination called 1 Answer
Navmesh agent problem 1 Answer
NavMesh agent bug 0 Answers
How to prevent Navmesh Agent from overshooting destination with high Time.TimeScale? 1 Answer
Navmesh one way gate 0 Answers