- Home /
How to apply more than one trigger on a single gamebject
I'm wanting to add more than one trigger on a single game object in different areas of the prefab. Should i use 3 box colliders? Can it be done? Please give me guidance regarding this.
I have run into a dead end by trying this approach:
I have 3 spawners spawning 2 prefabs vertically down. The spawning starts just above the view and when the object(moving down)exits the view...it re-spawns: My problem is that the 2 spawning objects in the array overlaps. Screen size = 768x1024.....objects Size = 256x170.666667. In other words....3 objects x 6. I'm trying to either fix this...or go the other route..as above mentioned.
var enemies :GameObject[]; // Array of enemy prefabs. tag names go here var spawnTime :float = 1.0f; // The amount of time between each spawn. var spawnDelay :float = 1.0f; // The amount of time before spawning starts. var enemySpeed :float = 5.0f;
var spawn :boolean = false; var spawnPosition :Transform; var randomLocation :Vector3; var enemyIndex :int;
function Start() {
// Start calling the Spawn function repeatedly after a delay .
InvokeRepeating("Spawn", spawnDelay, spawnTime);
spawn = true; // make sure Invoke started only once
randomLocation = Random.insideUnitSphere * 2; //2 is radius
randomLocation.y = 0.0f;
} function Spawn () { // Instantiate(spawnObject[spawnObjectIndex],spawnPosition.position + randomLocation,spawnObject[spawnObjectIndex].transform.rotation);
// Instantiate a random enemy.
enemyIndex = Random.Range(0, enemies.Length);
Instantiate(enemies[enemyIndex], transform.position, transform.rotation);
}
function Update () {
amtToMove = enemySpeed * Time.deltaTime;
transform.Translate(Vector3.down * amtToMove);
if(transform.position.y <=-6) //when object reaches bottom of the view
{
transform.position.y = 6; // back to top of the view
enemySpeed *= 1.02f; // increase my spawn speed with every cycle
}
Answer by ChristianLinnell · May 22, 2014 at 11:13 PM
I'm not really sure what you're trying to do, but yes you can have multiple triggers. Just create a child gameobject with a trigger collider for each of the trigger areas. OnTriggerEnter() will fire in the parent object if any of the child colliders is triggered.
You can further refine this by using Send$$anonymous$$essageUpwards on the child objects. This allows you to distinguish which collider has been triggered.
Thank you so much. I'm a beginner as you observed. I am going to do the game using multiple triggers way...just as a learning curve.
That way i can use only one spawner..ins$$anonymous$$d of 3 and my sync problems will be over..thanks again.
Very welcome! Don't forget to accept the answer to help other people find this :-)