Don't know how to get enemy's health

前端 未结 3 1779
遇见更好的自我
遇见更好的自我 2021-01-07 02:49

I have this code and I don\'t know why hit.collider.gameObject.GetComponent(\"health\") is returning null

void Shoot() {
        Vector2 mousePo         


        
相关标签:
3条回答
  • 2021-01-07 03:08

    You need to get a reference to the script attached to the Enemy. Then use that script to manipulate the health.

    Find the GameObject.

     GameObject g = hit.collider.gameObject;
    

    Get the reference to the script.

     EnemyAI e = g.GetComponent<EnemyAI>();
    

    Manipulate the health.

     e.health = 0f;
    

    In one line if you want to be badass.

     hit.collider.gameObject.GetComponent<EnemyAI>().health = 0.0f;
    

    Bonus tip: health should be private and EnemyAI should have a setter and a getter for that variable.

    0 讨论(0)
  • 2021-01-07 03:19

    However you would have to get the reference of the script that is attached to the GameObject. To do this you would need to use the following code.

    GameObject target;
    

    Then in your shoot method you update the reference to the target.

    if(hit.collider.gameObject != target) 
    {
        target = hit.collider.gameObject.GetComponent<EnemyAI>();
    }
    

    The reaason I put an if() statement around it is so that you're not overloading the CPU with GetComponent requests if the target hasn't already changed.

    From here you would simply change the value by using things such as

    target.value = newValue;
    target.SomeFunction();
    
    0 讨论(0)
  • 2021-01-07 03:30

    You are using Unity are you not? It looks that way from the code you provided. GetComponent() is a method that returns a reference to a component of the game object. These are the things you drag onto a game object in the Editor. Things like Box-Colliders and Rigidbodys. The code you wrote will not return anything because there is no game component in Unity called "health". To get the health of the enemy,you need to set up a reference to the script controlling the enemy and get its health value from there.

    0 讨论(0)
提交回复
热议问题