- Home /
Question by
holcampbell · May 21, 2014 at 03:32 PM ·
spawningspawning problemsspawning-enemies
Respawn script not working!
So I have an enemy game object. I managed to get it spawning, which was awesome but then I added a health bar to it and it stopped spawning for some reason. I've included both the script on the enemy ("EnemyControl") and the "Respawner" script.
Enemy Script
#pragma strict
public var respawner : Respawner; // The respawner associated with this enemy
private var thisTransform : Transform;
private var anim: Animator;
var smoothTime = 1;
var xOffset : float = 0;
//ENEMY HEALTH VARIABLES
public var health:int = 100;
public var healthPercent:float = 1;
public var healthBlock:GameObject;
public var healthBlockWidth:float = 1;
public var healthBlockSize:float = 100;
private var oHealth:int = 100;
public var healthBlockPos:float = 1.0;
function Start (){
thisTransform = transform;
//ENEMY HEALTH
healthBlock = this.transform.Find("HealthBlock").gameObject;
healthBlockWidth = healthBlock.transform.localScale.x;
healthPercent = healthBlockWidth/health;
healthBlockPos = healthBlock.transform.localPosition.x;
oHealth = health;
}
function OnTriggerEnter2D(other : Collider2D) {
if(other.gameObject.tag == "Player"){
canDie = true;
}
}
function OnTriggerExit2D(other : Collider2D) {
if(other.gameObject.tag == "Player"){
canDie = false;
}
}
function FixedUpdate (){
//kill enemy
if(canDie && Input.GetButtonDown("Fire1")){
health-=20;
}
//ENEMY HEALTH
healthBlockSize = health*healthPercent;
healthBlock.transform.localScale.x = healthBlockSize;
healthBlock.transform.localPosition.x = (((oHealth-health)*-1.0)/200)+healthBlockPos;
if(health<=0){
killEnemy();
}
}
function LateUpdate(){
//follow player code
thisTransform.position.x = Mathf.Lerp( thisTransform.position.x, player.position.x + xOffset, Time.deltaTime * smoothTime);
}
function killEnemy(){
respawner.SendMessage("EnemyDied", this); //Tell the respawner to kill enemy
health = 100;
}
And the Respawner script
#pragma strict
var enemyToSpawn : EnemyControl;
var respawnTime : int = 3;
private var dead : boolean = true;
private var deadTime : int = 0;
private var nextRespawn : int = 0;
private var anim: Animator;
private function Respawn() {
var enemy : GameObject = GameObject.Instantiate(enemyToSpawn.gameObject, transform.position, transform.rotation);
enemy.GetComponent(EnemyControl).respawner = this;
}
function Update() {
if (Time.time >= nextRespawn && dead) {
Respawn();
dead = false;
}
}
function EnemyDied(theEnemy : EnemyControl) {
deadTime = Time.time;
nextRespawn = Time.time+respawnTime;
GameObject.Destroy(theEnemy.gameObject);
}
I have no idea what I'm doing wrong. Any help greatly appreciated. Cheers!
Comment