Hello, i have been creating a script for a advancedAI, but can’t get it to work fully, so i want the AI to detect when i for example hit it and start chasing me, but it does not seem to be able to detect me when i hit it.
Script here.
using UnityEngine;
using System.Collections;
public class AdvancedEnemyAI : MonoBehaviour{
public int health = 100;
public float viewRange = 25f;
public float attackRange = 5f;
public bool isChasing = false;
public Transform playerTransform;
private NavMeshAgent agent;
private void Start()
{
agent = GetComponent<NavMeshAgent>(); // Find the Component "NavMeshAgent"
}
private void Update()
{
Ray ray = new Ray(transform.position, Vector3.forward);
RaycastHit hitInfo;
CheckHealth();
if(Physics.Raycast(ray, out hitInfo, viewRange))
{
if(hitInfo.collider.tag == "Player")
{
if (isChasing == false)
{
isChasing = true;
if(playerTransform == null)
{
playerTransform = hitInfo.collider.GetComponent<Transform>();
}
}
}
}
if (Physics.Raycast(ray, out hitInfo, attackRange))
{
}
Debug.DrawRay(ray.origin, ray.direction * viewRange, Color.red);
if (isChasing == true)
{
agent.SetDestination(playerTransform.position);
}
}
public void TakeDamage(int damage)
{
health -= damage;
Debug.Log("Enemy took damage and now has " + health + "health!");
}
private void CheckHealth()
{
if(health <= 0)
{
Destroy(gameObject);
}
}
}
And the Detecting Script here
using UnityEngine;
using System.Collections;
public class PlayerDetector : MonoBehaviour
{
private Transform playerDetectoTransform;
private AdvancedEnemyAI advancedEnemyAI;
private void Start()
{
advancedEnemyAI = GetComponentInParent<AdvancedEnemyAI>();
}
private void OnTriggerEneter(Collider target)
{
if (target.tag == "Player")
{
playerDetectoTransform = target.GetComponent<Transform>();
if(advancedEnemyAI.playerTransform == null)
{
advancedEnemyAI.playerTransform = playerDetectoTransform;
}
}
}
}