OnCollisionEnter вызывается два раза на стыке коллайдеров

Имеется платформа, состоящая из сегментов. На каждом сегменте висит компонент Mesh Collider. Так как сегменты вплотную друг к другу, при попадании игрового объекта на стык двух сегментов, метод OnCollisionEnter() вызывается сразу два раза одновременно. Как можно реализовать вызов метода только единожды за раз?

    private void OnCollisionEnter(Collision collision)
{
    if(collision.gameObject.TryGetComponent(out PlatformSegment platformSegment))
    {
        _rigidbody.AddForce(Vector3.up * _jumpForce, ForceMode.Impulse);
    }
}

Ответы (1 шт):

Автор решения: Риксед

Попробуй сделать так чтобы этот скрипт мог выполняться только 1 раз за определённое время

private bool cancollide = true;
private void OnCollisionEnter(Collision collision)
{
    if(collision.gameObject.TryGetComponent(out PlatformSegment platformSegment))
    {
        if (cancollide)
        {
            StartCoroutine(CollideCooldown)
            _rigidbody.AddForce(Vector3.up * _jumpForce, ForceMode.Impulse);
        }
    }
}
IEnumerator CollideCooldown()
{
    cancollide = false;
    yield return new WaitForSeconds(0.1f); // В скобках напиши время в секундах
    cancollide = true;
}
→ Ссылка