- Home /
Reaching a gameobject from its collider
Hi everyone
I've been writing this new script, which I use to attack the enemies in the game. I want the player to lower the health variable of the enemy when the enemy is inside the trigger and the player presses a button. For this I want to reach the gameobject which enters the trigger so I can change its health value. This is my script, it's attached to a trigger which is a child of the player.
var otherobject : Transform;
var cooldown : boolean = false;
var activetexture : GUIStyle;
var inactivetexture : GUIStyle;
var usedtexture : GUIStyle;
var enemyhealth : EnemyHealth;
static var interval : float;
function Start (){
usedtexture = activetexture;
interval = 10;
}
function OnTriggerStay(Trigger : Collider){
if (Trigger.tag == "Enemy" && otherobject == null){
otherobject = THE OBJECT TO WHICH THE COLLIDER WHICH ENTERS THE TRIGGER IS ATTACHED;
enemyhealth = otherobject.GetComponent(EnemyHealth);
}
else {
otherobject = null;
enemyhealth = null;
}
}
function OnGUI (){
if (GUI.Button (Rect(0,500,100,100),GUIContent("Attack"),usedtexture) && otherobject != null && cooldown == false){
enemyhealth.enemyhealth -= 50;
cooldown = true;
Timer();
}
}
function Timer (){
if(cooldown == true){
usedtexture = inactivetexture;
yield WaitForSeconds(interval);
cooldown = false;
usedtexture = activetexture;
}
}
How can I find the GameObject?
Answer by Shadamer · Jan 01, 2014 at 11:18 PM
You might consider maintaining a list of enemies (however you choose, List, Array, GameObject[], etc) that come in contact with your character, i.e. (PseudoCode)
function OnTriggerEnter(Trigger: Collider){ myList.add(Trigger.gameObject); }
function OnTriggerExit(Trigger: Collider){ myList.remove(Trigger.gameObject); }
function Update(){ // do your random stuff here doStuffTo(myList.GetElementAt(Random.Range(0,myList.Count))); }
Answer by Romano185 · Mar 23, 2012 at 10:32 PM
Thanks very much, it works great. But the script strangely only accepts the topmost enemy in the hierarchy panel. How can I make it accept all the enemies in a random order?
Your answer
Follow this Question
Related Questions
Trigger can't see the enemy 2 Answers
Parent Script accessing Child components 1 Answer
Undefind tag? 0 Answers
Child collider triggering parent collider effects. 1 Answer
Check Trigger Collision's Name/Tag 1 Answer