Unity — обнаружение столкновений в рамках обнаружения столкновений

#c# #visual-studio #unity3d

#c# #visual-studio #unity3d

Вопрос:

Я стреляю мячом по блокам, и есть 3 Мега блока, которые делают оружие сильнее. В моем мегаблоке 1, если обнаружено столкновение с выпущенным мной пулевым шаром, запустите код. Это работает нормально. Теперь, если был поражен мега-блок 1 (tag= MegaBlock01), выполните один код, если был поражен мега-блок 2 и т.д. Я хотел поместить этот блок кода в каждый мегаблок, чтобы мне не приходилось писать новый код для каждого.

 public void OnTriggerEnter(Collider other)  // This code is on my Mega Blocks
{
    if (other.CompareTag("BulletBall"))  // The Ball has hit me
    {
       StartMegaWeapon01();

        // What I want is:  
        // If my tag is MegaBlock01, run StartMegaWeapon01();
        // If my tag is MegaBlock02, run StartMegaWeapon02();

    }
}
  

Я хочу обнаружение столкновений внутри обнаружения столкновений.

Ответ №1:

Вам необходимо, чтобы коллайдер вашего маркера был отмечен как isTrigger, поскольку вы вызываете OnTriggerEnter метод. По крайней мере, один из двух сталкивающихся объектов также должен иметь жесткое тело, чтобы физический движок мог правильно вычислять столкновения.

Как только у вас это получится, получения тега GameObject из this должно быть достаточно:

 if (gameObject.tag == "MegaBlock01")
    StartMegaWeapon01();