Problem about finding script name
Hi all, i am struggling with this problem for very long time and i have never found right solution. So, let me explain my problem ( i don't know how good will you understand because my English is not so good) :
I have a game where player click on a icon of monster he wants to spawn from his base, and that monster (or monsters) go right to enemy base. They deal damage buy colliding or with arrows if they are ranged, but let get on problem - I have base class for all of that monsters ( Called BaseMonster ) and in that class, i have TakeDamage function, but i have unique script for all of my monsters because some of them have reduced damage etc. Problem is, when monsters collide, i can't know exactly name of the script, but i can not use 'SendMessage' because i need more then one parameter for that function.
I hope someone will give me right answer, i really need solution for this problem
Answer by amimox · Mar 11, 2016 at 04:32 PM
Maybe this can help :
//Colliding method in your Base Monster class
void OnTriggerEnter(Collider other)
{
//Just take damage if what collided with the monster is an Arrow, for example
if (other.ComparTag("Arrow")
TakeDamage(123);
}
Do you mean your MonsterBase class is controlling all your monster health ? If that is true, your approach is incorrect. Instead, you should Instantiate a new Monster each time you want to spawn a Monster, like this.
Instantiate(monsterGameObjectPrefab, position, roration);
monsterGameObjectPrefab will be an object you already defined in Unity and that you made a prefab of it. If you don't know about what I am talking, then read Unity documentation about Prefabs.
$$anonymous$$y $$anonymous$$onsterBase is just a base class, i inherited each monster script from that class. As said, i can't directly call function ( like TakeDamage in your comment ) because i need to know name of the script first. I do not have any other idea how to do this, but i am opened for advices
Example : Enemy monster collided with player monster - from enemy monster script ( let we call it 'Enemy$$anonymous$$onsterScript' ) i need to call function TakeDamage but archer and knight have two different scripts ( but they are both inherited from same class - Base$$anonymous$$onster ). I can use switch statement but i am sure there is better approach. Thanks for response anyway
Your answer
Follow this Question
Related Questions
Script not returning value to other script 1 Answer
Function won't be called 1 Answer
[SOLVED]My code line don't execute 1 Answer
calling a value between 2 scripts 0 Answers