I’m trying to pass a variable from my HealthScript to my AI attackscript but I get nullreferenceexception errors. I’m not sure of how to pass it, can anyone check my scripts?
AI AttackScript
using UnityEngine;
using System.Collections;
public class AttackScript : MonoBehaviour {
Transform player;
Transform _transform;
float sqrRange = 3;
AIScript AIscript;
public GUIStyle customGuiStyle;
//Temp HP
float HP = 100f;
//Accessing HP script
HealthScript HPscript;
void Start(){
HPscript = GetComponent<HealthScript>();
AIscript = GetComponent<AIScript>();
player = GameObject.FindGameObjectWithTag("Player").transform;
if (player == null)
Debug.LogError("No player on scene");
_transform = GetComponent<Transform>();
}
void AttackColliision(){
Vector3 direction = player.position - _transform.position;
if(AIscript.animation.IsPlaying("G_AttackScript") && (direction.sqrMagnitude < sqrRange)){
if(Vector3.Dot (direction.normalized,_transform.forward) > 0){
//Damage Script
HPscript.HP -= 50;
if(HPscript.HP <= 0){ Time.timeScale = 0; AudioListener.pause = true;
print(HPscript.HP);
}
}
}
}
void Update(){
Debug.Log(HPscript.HP);
if (HPscript.HP < HPscript.maxHP) HPscript.HP += HPscript.healSpeed * Time.deltaTime;
}
void OnGUI(){
GUI.Box (new Rect (Screen.width - 125,10,100,20), "Health: " + HPscript.HP, customGuiStyle);
if(HPscript.HP <= 0){
GUI.Box (new Rect (Screen.width / 2,Screen.height / 2,100,50), "You are Dead!", customGuiStyle);
}
}
}
My HealthScript
using UnityEngine;
using System.Collections;
public class HealthScript : MonoBehaviour {
public float HP = 100f;
public float maxHP = 100f;
public float healSpeed = 5f;
}