I have a sphere that spawns robots and a cube that when it gets detroyed the sphere gets destroyed. I am using sendmessage to the sphere to destroy it but it isnt working. Here is the script for the cube:
var hitPoints = 100.0;
var detonationDelay = 0.0;
var explosion : Transform;
var deadReplacement : Rigidbody;
function ApplyDamage (damage : float) {
// We already have less than 0 hitpoints, maybe we got killed already?
if (hitPoints <= 0.0)
return;
hitPoints -= damage;
if (hitPoints <= 0.0) {
// Start emitting particles
var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
if (emitter)
emitter.emit = true;
Invoke("DelayedDetonate", detonationDelay);
}
}
function DelayedDetonate () {
BroadcastMessage ("Detonate");
}
function Detonate () {
// Destroy ourselves
Destroy(gameObject);
// Create the explosion
if (explosion)
Instantiate (explosion, transform.position, transform.rotation);
// If we have a dead barrel then replace ourselves with it!
if (deadReplacement) {
var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation);
// For better effect we assign the same velocity to the exploded barrel
dead.rigidbody.velocity = rigidbody.velocity;
dead.angularVelocity = rigidbody.angularVelocity;
gameObject.SendMessage( "Destroy1",
SendMessageOptions.RequireReceiver);
}
// If there is a particle emitter stop emitting and detach so it doesnt get destroyed
// right away
var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
if (emitter) {
emitter.emit = false;
emitter.transform.parent = null;
}
}
and the script for the sphere:
var maxrobots = 5;
var robot : GameObject;
var timebetweenspawns = 5.0;
var robotcount = 0;
var lastspawn =-10.0;
var explosion : GameObject;
var deadReplacement : Rigidbody;
function Destroy1 ()
{
Destroy( gameObject );
if (explosion)
Instantiate (explosion, transform.position, transform.rotation);
if (deadReplacement)
{
var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation);
dead.rigidbody.velocity = rigidbody.velocity;
dead.angularVelocity = rigidbody.angularVelocity;
}
}
function Update ()
{
if( Time.time > timebetweenspawns + lastspawn && robotcount <= maxrobots )
{
Instantiate( robot, transform.position, transform.rotation );
lastspawn = Time.time;
robotcount++;
}
}