Задать вопрос

Не работает OnTriggerEnter2D. Что делать?

Привет! Я пишу игру на юнити 2д. Возникла проблема: не работает OnTriggerEnter. Он просто не вызывается. У коллайдера стоит isTrigger. Ниже фрагмент кода.
spoiler
public class movement : MonoBehaviour
{
    [SerializeField]
    GameObject point;
    public float damage = 5.0f;
    bool isContact = false;
    GameObject enemy;
    GameObject castle;
    bool nextCastle = false;
    bool canAttack = true;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        float dist = Vector2.Distance(point.transform.position, transform.position);
        if (dist > 2.5f)
        {
            if (isContact && canAttack)
            {
                Health h = enemy.GetComponent<Health>();
                h.health_(damage);
                StartCoroutine(damageDelay());
                isContact = false;
            }
            else
            {
                transform.position = new Vector2(transform.position.x - 0.1f, transform.position.y);
            }
        }
        else if (nextCastle && canAttack)
        {
            CastleHealth cH = castle.GetComponent<CastleHealth>();
            cH.AddHealth(damage);
            StartCoroutine(damageDelay());
        }
    }

    void OnTriggerEnter2D(Collider2D collider)
    {
        Debug.Log("Тут что-то не так!");
        if (collider.tag == "Bot")
        {
            isContact = true;
            enemy = collider.gameObject;
        }
        else if(collider.tag == "Castle")
        {
            nextCastle = true;
            castle = collider.gameObject;
        }
    }

    IEnumerator damageDelay()
    {
        canAttack = false;
        yield return new WaitForSeconds(0.5f);
        canAttack = true;
    }
}
  • Вопрос задан
  • 715 просмотров
Подписаться 1 Средний 10 комментариев
Решения вопроса 1
@sylniyduxom Автор вопроса
Искомый объект являлся просто спрайтом. Это не давало его отслеживать. Проблема решилась добавлением пустого объекта, в который был вложен этот спрайт
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы