here is the code I Recieve
NullReferenceException: Object reference not set to an instance of an object
NPC_Battle_AI.OnTriggerEnter (UnityEngine.Collider col) (at Assets/Assets/Scripts/NPC_Battle_AI.cs:82)
I added a self check but it still popped up null.
I have attached the script. Can anyone Help?
using UnityEngine;
using System.Collections;
public class NPC_Battle_AI : MonoBehaviour {
public GameObject NPC;
public float rotationSpeed;
public GameObject target;
public bool move;
public bool attack;
public GameObject[] projectileSpawn;
public GameObject projectile;
private GameObject missile1 ;
private GameObject missile2 ;
public float reloadTine;
public GameObject closest;
public bool openBattle;
void Start ()
{
if (target == null)
{
openBattle = true;
move = false;
NPC = gameObject;
rotationSpeed = 5;
FindClosestEnemy(target);
}
}
void Update ()
{
if (move == true)
{
NPC.transform.rotation = Quaternion.Slerp (NPC.transform.rotation, Quaternion.LookRotation (target.transform.position - NPC.transform.position), rotationSpeed * Time.deltaTime);
transform.position = Vector3.MoveTowards (transform.position,target.transform.position, GetComponent <Stats_Script>().speed *Time.deltaTime );
}
else if (attack == true)
{
Attack ();
if (target == null)
{
attack = false;
GetComponent <NPC_Battle_AI>().enabled = false;
gameObject.GetComponent<Basic_AI>().enabled = true;
}
}
}
void FindClosestEnemy(GameObject target) {
if (openBattle == true )
{
GameObject[] gos;
gos = GameObject.Find ("Main Camera").GetComponent <Tower_Database>().registry;
GameObject closest;
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in gos) {
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if (curDistance < distance) {
closest = go;
target = closest;
distance = curDistance;
}
}
// return closest;
}
}
void OnTriggerEnter (Collider col)
{
if (col != null)
{
if (openBattle == true)
{
if (col.gameObject.GetComponent <Stats_Script>().userActive == true)
{
target = col.gameObject;
move = false;
attack = true;
}
}
}
}
void Attack ()
{
attack = false;
if (projectileSpawn.Length == 0)
{
gameObject.GetComponent <NPC_Battle_AI>().enabled = false;
gameObject.GetComponent <Basic_AI>().enabled = true;
}
else {
missile1 = Instantiate (projectile, projectileSpawn[0].transform.position, projectileSpawn[0].transform.rotation) as GameObject;
if (projectileSpawn.Length > 1 )
{
missile2 = Instantiate (projectile, projectileSpawn[1].transform.position, projectileSpawn[1].transform.rotation) as GameObject;
}
StartCoroutine (Wait());
}
}
IEnumerator Wait ()
{
print (gameObject.name + " Reload.");
yield return new WaitForSeconds (reloadTine);
attack = true;
}
}