- Home /
Question by
gallant1357 · Oct 20, 2018 at 11:39 AM ·
playeraienemynavmeshagentenemy ai
NavMeshAgent does not follow player
I am making a stealth game where when the enemy ai sees the player they chase the player, however when they are behind a wall or some obstacle they wont be able to see the player, the enemy vision is like a cone, i have made a nav mesh agent for my enemy ai and baked the area, when the player is in enemy sight, the ai is not moving at all, this is the code i have below
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class enemyControl : MonoBehaviour
{
Ray enemyRay;
public Color rayColor;
RaycastHit rayHit;
bool follow;
public float sightDist;
private NavMeshAgent agent;
public GameObject him;
void Start()
{
agent = GetComponent<NavMeshAgent>();
him = GameObject.FindGameObjectWithTag("Player");
}
void Update()
{
//enemyRay = new Ray(transform.position, transform.forward * sightDist);
Debug.DrawRay(transform.position + Vector3.up, transform.forward* sightDist, rayColor);
Debug.DrawRay(transform.position + Vector3.up, (transform.forward + transform.right).normalized * sightDist, rayColor);
Debug.DrawRay(transform.position + Vector3.up, (transform.forward - transform.right).normalized * sightDist, rayColor);
if (Physics.Raycast(transform.position + Vector3.up, transform.forward, out rayHit, sightDist))
{
if (rayHit.collider.gameObject.tag == "player")
{
agent.SetDestination(him.transform.position);
him = rayHit.collider.gameObject;
}
}
if (Physics.Raycast(transform.position + Vector3.up, (transform.forward + transform.right).normalized, out rayHit, sightDist))
{
if (rayHit.collider.gameObject.tag == "player")
{
agent.SetDestination(him.transform.position);
him = rayHit.collider.gameObject;
}
}
if (Physics.Raycast(transform.position + Vector3.up, (transform.forward - transform.right).normalized, out rayHit, sightDist))
{
if (rayHit.collider.gameObject.tag == "player")
{
agent.SetDestination(him.transform.position);
him = rayHit.collider.gameObject;
}
}
}
void OnTriggerEnter(Collider coll)
{
if (coll.tag == "Player")
{
agent.SetDestination(him.transform.position);
him = coll.gameObject;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Enemy's NavMesh not working 2 Answers
Enemy raycast detection 0 Answers
Enemy detection in the light(Javascript) 1 Answer
Tank not moving towards player 1 Answer
Different enemy types script design 1 Answer