- Home /
Get Object, Trigger Attached Method,Trigger method on collider script
Hi, i am trying to trigger the method Hit() on my enemy script when it walks into this area. I do need it to be the script on the specific enemy instance though. the function itself will have features later, i just wanted to get the trigger working first. Attack Script:
Enemy Script:
I was getting these errors: Assets\Scripts\AreaEffect.cs(35,21): error CS0176: Member 'GameObject.Find(string)' cannot be accessed with an instance reference; qualify it with a type name instead Assets\Scripts\AreaEffect.cs(36,19): error CS1061: 'GameObject' does not contain a definition for 'Hit' and no accessible extension method 'Hit' accepting a first argument of type 'GameObject' could be found (are you missing a using directive or an assembly reference?)
Answer by unity_ek98vnTRplGj8Q · Jan 03, 2020 at 08:40 PM
A few problems here: The correct syntax is GameObject.Find()
not gameObject.Find()
. You want to call the static method that resides in the GameObject class, not an instance method associated with your actual game object.
You need to call Hit()
on the "Enemy" component that is attached to the colliding game object, not on the gameObject itself. Try this instead: enemy.GetComponent<Enemy>().Hit()
While this should work for you, try to get out of the habit of using GameObject.Find()
as it is very inefficient. You already know what game object you have collided with, you can find it in your collider
variable that is passed into the OnTriggerEnter function. So with that in mind, your code should look like this:
void OnTriggerEnter2D(Collider2D collider){
if(collider.tag == "EnemyRed"){
//Get the "Enemy" script that is attached to the colliding game object
Enemy enemyComponent = collider.gameObject.GetComponent<Enemy>();
//Make sure this component actually exists
if(enemyComponent == null){
Debug.Log("No enemy script is attached to the colliding object");
return;
}
//Call the component's Hit function
enemyComponent.Hit();
}
}
Your answer
Follow this Question
Related Questions
Is it posible to use a single function to change any property plugged in to it? 3 Answers
Is it possible to create a List filled with methods? 3 Answers
Animation Event don't show C# methods 1 Answer
Is it worth making tons of similiar methods or create big one that connects things together? 2 Answers
Theory: Methods and Functions 1 Answer