Hello,
I have been having issues with a simple script, it seems to be causing my enemies to die on spawn please help, am new to coding.
using UnityEngine;
using System.Collections;
public class DamageHandlerEnemy : MonoBehaviour {
public int maxHealth = 100;
[System.Serializable]
public class EnemyStats {
public int maxHealth;
private int _curHealth;
public int curHealth
{
get { return _curHealth; }
set { _curHealth = Mathf.Clamp (value, 0, maxHealth); }
}
public void Init()
{
curHealth = maxHealth;
}
}
public float invulnPeriod = 0;
float invulnTimer = 0;
int correctLayer;
SpriteRenderer spriteRend;
public EnemyStats stats = new EnemyStats ();
[Header ("Optional: ")]
[SerializeField]
private StatusIndicator statusIndicator;
void Start() {
correctLayer = gameObject.layer;
// NOTE! This only get the renderer on the parent object.
// In other words, it doesn't work for children. I.E. "enemy01"
spriteRend = GetComponent<SpriteRenderer>();
if(spriteRend == null) {
spriteRend = transform.GetComponentInChildren<SpriteRenderer>();
if(spriteRend==null) {
Debug.LogError("Object '"+gameObject.name+"' has no sprite renderer.");
stats.Init();
if (statusIndicator != null)
{
statusIndicator.SetHealth (stats.curHealth, stats.maxHealth);
}
}
}
}
void OnTriggerEnter2D() {
EnemyStats stats = new EnemyStats ();
stats.curHealth--;
if(invulnPeriod > 0) {
invulnTimer = invulnPeriod;
gameObject.layer = 10;
}
}
void Update() {
if(invulnTimer > 0) {
invulnTimer -= Time.deltaTime;
if(invulnTimer <= 0) {
gameObject.layer = correctLayer;
if(spriteRend != null) {
spriteRend.enabled = true;
}
}
else {
if(spriteRend != null) {
spriteRend.enabled = !spriteRend.enabled;
}
}
}
EnemyStats stats = new EnemyStats ();
if(stats.curHealth <= 0) {
Die();
if (statusIndicator != null)
{
statusIndicator.SetHealth (stats.curHealth, stats.maxHealth);
}
}
}
void Die() {
Destroy(gameObject);
}
}