EnemyHealth.js script not working...

I have been working on this script for the past month and my collisions are not working…

I have a drone and when a bullet hits the Sphere Collider, I want the drone to lose health and after it has been hit three times, I want the drone to add a rigidbody component and after 3 seconds, to disappear… Any suggestions?

Here’s my code so far…

#pragma strict

function OnCollisionEnter(deadPlayer : Collision)
{
    if (deadPlayer.gameObject.tag == "Drone")
    {
        Debug.Log("HIT");
       Destroy(GameObject.FindGameObjectWithTag("Drone"));
    }
}

Could you please clarify the question? If your question is clear, it helps us to help you. A quickly glance reveals that you're wanting drone to lose health first, then count to three, then add rigidbody (??), then wait for 3 seconds, and lastly, disappear. Am I right?

What I want the script to do is when a bullet hits the drone, i want it to lose health and once the drone loses 3 health, I want to add a rigidbody component, wait 3 seconds and then the drone to disappear from the scene @iklaiah...

rigidbody should exist on the enemy before the collision is fired. to have a collision you need a rigidbody and a collider. non-kinematic

Does that mean that the bullet needs a collider and the enemy needs a rigidbody or both need a collider and a rigidbody?

1 Answer

1

#pragma strict

var health : int = 3;
var timer : float = 0.0;

private var timerMax : float = 3.0;
private isDead : boolean = false;

function OnCollisionEnter(deadPlayer : Collision)
{
   if (deadPlayer.gameObject.tag == "Drone")
   {
      Debug.Log("HIT");
      health --;
      
      if (health == 0)
      {
         rigidbody.enabled = true;
         isDead = true;
      }
   }
}

function Update()
{
   if (isDead == true)
   {
      timer++;
   }

   if (timer >= timerMax)
   {
      Destroy(GameObject.FindGameObjectWithTag("Drone"));
   }
}

Like @KuPAfoo said, add a rigidbody beforehand, and then use this script.