I am trying to get a rocket launcher to apply damage on collision between the rocket and an object tagged with “Enemy”.
The objects are colliding, but the enemy object is not taking any damage (message is not being sent?), and my debug logs (collision detected, damage received) are not showing up either.
Both the rocket and enemy objects have a rigid body and a capsule collider.
Here’s my “RocketDamage” script, attached to the Rocket prefab:
#pragma strict
var damage = 25;
function OnTriggerEnter(collider:Collider)
{
if (collider.CompareTag("Enemy"))
{
collider.gameObject.SendMessage("ApplyDamage", damage);
Debug.Log("Collision detected!");
}
}
and my DamageController script (attached to enemy object):
#pragma strict
@script RequireComponent(Rigidbody)
var hitPoints = 100;
var explosionDelay = 0.0;
var explosion : Transform;
function ApplyDamage(damage : float) {
if (hitPoints <= 0.0)
{
return;
}
hitPoints -= damage;
Debug.Log(hitPoints + " - HP remaining.");
if (hitPoints <= 0.0)
{
var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
if (emitter)
emitter.emit = true;
Invoke("DelayedExplosion", explosionDelay);
}
}
function DelayedExplosion() {
BroadcastMessage("Detonate");
}
function Detonate() {
Destroy (gameObject);
if (explosion) {
Instantiate (explosion, transform.position, transform.rotation);
}
var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
if (emitter) {
emitter.emit = false;
particleEmitter.transform.parent = null;
}
}
Would appreciate any ideas on why this is happening. Thanks for your time!