У меня есть несколько врагов, настроенных на уровне, все с одинаковым поведением и сценариями аниматора. Когда я бью или убиваю одного из них, их всех убивают или убивают. Мне нужно, чтобы они работали как отдельные экземпляры.
Я пытался ссылаться только на экземпляр скрипта:
private GoblinBehaviour goblin;
goblin = GetComponent<GoblinBehaviour>();
goblin.IncrementHits(1);
Но это не работает. Возникает ошибка, которая говорит о том, что скрипт не может быть доступен с экземпляром, и ему нужен тип.
код для сценария обнаружения попаданий:
public class RangedDetection : MonoBehaviour
{
private GoblinBehaviour goblin;
void OnTriggerEnter(Collider other)
{
//on colliding destroy rocks after its life time
Destroy(gameObject, rockLifeTime);
if (other.gameObject.tag.Equals("Enemy"))
//if (other.tag == "Enemy")
{
Destroy(other.gameObject);
}
else if (other.gameObject.tag.Equals("Goblin"))//goblin should play
death animation
{
goblin = GetComponent<GoblinBehaviour>();
goblin.IncrementHits(1);
GetComponent<BoxCollider>().enabled = false; //Removing hit
collider so it only hits target once.
}
}
}
Упрощенный код для сценария гоблинов:
public class GoblinBehaviour : MonoBehaviour
{
Transform player;
public static bool isDead;
public static bool isPunching;
public static bool isHit;
public GameObject particles;
public Animator anim;
public void IncrementHits(int hitCount)
{
isHit = true;
hits += hitCount;
if (hits >= 2) isDead = true;
}
void Die()
{
Instantiate(particles, transform.position, transform.rotation);
Destroy(gameObject);
}
void updateAnim()
{
anim.SetBool("Punch_b", isPunching);
anim.SetBool("hit", isHit);
}
}
Вещи должны анимироваться и действовать отдельно, я не уверен, какссылаться только на текущий экземпляр скрипта.