проверяю столкновение с землей с помощью onCollisionEnter, вот код:
public void OnCollisionEnter(Collision other)
{
if(other.gameObject.CompareTag("Graund"))
onGraund = true;
if (other.collider.CompareTag("Teleport"))
{
_teleportMenuCanOpen = true;
tipPressE.SetActive(true);
}
}
public void OnCollisionExit(Collision other)
{
if (other.gameObject.CompareTag("Graund"))
{
onGraund = false;
_jumpCount += 1;
}
if (other.collider.CompareTag("Teleport"))
{
_teleportMenuCanOpen = false;
tipPressE.SetActive(false);
}
}
у меня есть два боксколлайдера в качестве дороги/земли(они пересекаются).
давайте проанализируем:
1) игрок находится на первом коллайдере - onGraund = истина(всё окей)
2) игрок уже перемещался на пересечение коллайдеров - onGraund = истина(всё окей)
3) игрок уже полностью находится на втором коллайдере - onGraund = ложь (так что?)
4) игрок снова переместился на первый коллайдер - onGraund = ложь (так стоп!)
5) игрок находится в пересечение коллайдеров - onGraund = истина(😒) и так далее любым количеством коллайдеров...
p.s. 1) коде в место other.gameObject.CompareTag тоже проверил other.Collider.CompareTag, та же фигня
2) да мне лень поменять onGrAund на onGrOund
у кого была такая же проблема? кто то знает ка решит?
Лучше сделай проверку не на тег, а на слой
Обсуждают сегодня