- Home /
Question by
gallant1357 · Oct 19, 2018 at 02:55 PM ·
raycastplayerdetectionenemy ai
enemy Raycast cone detection
so i have this enemy ai with cone detection of the player, however, the enemy only detect the player when the player is in either one of those 3 white line, how do i make the enemy detect the player within the cone area? my code below. and how do i make the cone thinner?
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 float timer = 0f;
public float heightMultiplier;
private Vector3 investigateSpot;
private NavMeshAgent agent;
public GameObject him;
void Start()
{
agent = GetComponent<NavMeshAgent>();
him = GameObject.FindGameObjectWithTag("Player");
heightMultiplier = 1.36f;
}
void Update()
{
timer += Time.deltaTime;
//enemyRay = new Ray(transform.position, transform.forward * sightDist);
Debug.DrawRay(transform.position + Vector3.up * heightMultiplier, transform.forward* sightDist, rayColor);
Debug.DrawRay(transform.position + Vector3.up * heightMultiplier, (transform.forward + transform.right).normalized * sightDist, rayColor);
Debug.DrawRay(transform.position + Vector3.up * heightMultiplier, (transform.forward - transform.right).normalized * sightDist, rayColor);
if (Physics.Raycast(transform.position + Vector3.up * heightMultiplier, 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 * heightMultiplier, (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 * heightMultiplier, (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;
}
}
}
[1]: /storage/temp/126350-raydirection.png
raydirection.png
(372.9 kB)
Comment
Your answer
Follow this Question
Related Questions
enemy raycast to detect player 1 Answer
multiple enemy AI raycast 1 Answer
Raycast for audio detection in 'echos' general theory. 0 Answers
Enemy Ai Field of View 0 Answers
How to Check for Enemie in Front? Raycast is not Enough! 2 Answers