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

Общие вопросы о Unity3D

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

Сообщение artmexbet 01 апр 2020, 14:51

Привет! Я пишу игру на юнити 2д. Возникла проблема: не работает OnTriggerEnter. Он просто не вызывается. У коллайдера стоит isTrigger. Ниже фрагмент кода.
Синтаксис:
Используется csharp
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;
    }
}
artmexbet
UNец
 
Сообщения: 3
Зарегистрирован: 01 апр 2020, 14:45

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

Сообщение Woland 01 апр 2020, 15:22

Trigger events are only sent if one of the Colliders also has a Rigidbody2D attached.
Woland
Адепт
 
Сообщения: 1240
Зарегистрирован: 20 апр 2013, 18:09
  • Сайт

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

Сообщение Dio5555 01 апр 2020, 15:25

C триггером всё нормально. Посмотрите висит ли у объектов RigidBody2d, правильно ли ведён тег, если не работает после "Debug.Log("Тут что-то не так!")"
Dio5555
UNIт
 
Сообщения: 83
Зарегистрирован: 06 сен 2018, 11:05

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

Сообщение artmexbet 01 апр 2020, 15:25

Woland писал(а):Trigger events are only sent if one of the Colliders also has a Rigidbody2D attached.
Rigidbody2D is attached. Doesn't matter which one?
artmexbet
UNец
 
Сообщения: 3
Зарегистрирован: 01 апр 2020, 14:45

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

Сообщение artmexbet 01 апр 2020, 15:26

Dio5555 писал(а):C триггером всё нормально. Посмотрите висит ли у объектов RigidBody2d, правильно ли ведён тег, если не работает после "Debug.Log("Тут что-то не так!")"

Даже дебаг не работает. Rigidbody2D стоит. Важно ли на каком объекте стоит?
artmexbet
UNец
 
Сообщения: 3
Зарегистрирован: 01 апр 2020, 14:45

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

Сообщение Dio5555 01 апр 2020, 15:35

Скрипт должен висеть на триггере, а RigidBody2d на том кто в него входит плюс коллайдер2D.
Dio5555
UNIт
 
Сообщения: 83
Зарегистрирован: 06 сен 2018, 11:05


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12