Hello
I created an “Enemy” that has its current health displayed above its head via a 3D Text that is constantly updated. It loses health when the “Bullet” Object, which I tagged as, Bullet, collides with the “Enemy”. And it is constantly looking at me and moving towards me. When the distance between me and the “Enemy” is below 2 it decreses my own health.
I have the “Enemy” Object in my scene and made a function to spawn (Instantiate) another one by pressing a button.
I made sure that the script finds every GameObject var that it needs.
That’s it for the theoretical part… Now when I run my game everything doesn’t work how it should.
Everything works fine as long as I don’t spawn another “Enemy”.
When I spawn one, the Health won’t get displayed on the 3D Text of the “Enemy” I spawned, instead, when I shoot it it decreases the Health displayed on the original “Enemy”, and once it reaches 0 it destoyes the one I shot, and the original one has full health again.
After I destroyed these two “Enemys” and tried to spawn another one its health goes beyond 0 and I can’t destroy it. Same for every other spawned “Enemy” after I killed the first one.
And instantiated “Enemys” aren’t albe to cause my damage.
Here’s my script that is attached to the “Enemy”:
//Vars
var EnemyHealth : float = 100;
var Enemy : GameObject;
var EnemyNameTag : GameObject;
//Kill Player Function Vars
var EnemyObj : GameObject;
var PlayerObj : GameObject;
var GunScriptContainer : GameObject;
var distance : float;
//Shooting function
var target : GameObject;
function Awake()
{
Enemy = GameObject.Find("Enemy");
EnemyNameTag = GameObject.Find("3DTextEnemy");
GunScriptContainer = GameObject.Find("Glock");
EnemyObj = GameObject.Find("Enemy");
PlayerObj = GameObject.Find("First Person Controller");
target = GameObject.Find("First Person Controller");
};
// Check if bullet hits enemy
function OnTriggerEnter(BulletCol : Collider)
{
if (BulletCol.gameObject.CompareTag("Bullet"))
{
EnemyHealth -= Random.Range(3, 50);
Debug.Log("Enemy down");
};
};
//Update everything per frame
function Update()
{
EnemyHealthNameController();
ShootAtPlayer();
PlayerDamageController();
EnemyHealthController();
};
//Update Enemy Health
function EnemyHealthNameController()
{
EnemyNameTag.GetComponent(TextMesh).text = "Enemy: "+EnemyHealth;
};
//Enemy Health function
function EnemyHealthController()
{
if (EnemyHealth <= 0)
{
Destroy(gameObject);
};
};
//Shooting/Looking at Player function
function ShootAtPlayer()
{
transform.LookAt(target.transform);
rigidbody.AddForce(transform.forward * 10);
};
//Player Distance Damage Function
function PlayerDamageController()
{
var distance = Vector3.Distance(EnemyObj.transform.position, PlayerObj.transform.position);
if (distance <= 2)
{
GunScriptContainer.GetComponent(GunScript).PlayerHealth -= Random.Range(5, 10);
};
};
Any ideas? This problem has been bothering me for 5 days now. And is keeping me from making any progress in my first game.