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;
}