Jurajkeee
@Jurajkeee
Baby Developer

Как вернуть прежнее состояние объекта после использования Physics2D.IgnoreCollision?

Столкнулся с такой проблемой что тег Physics2D.IgnoreCollision, Physics2D.GetIgnoreCollision, Physics2D.IgnoreLayerCollision работают только в одну сторону и я не знаю, собственно ,как можно вернуть прежнее состояние объекта, когда он реагирует на все столкновение. Или надо менять схему скрипта?082f7c9cde4646e49c52bda98dc2956b.png
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
IgnoreCollision можно сбросить выключением коллайдера, как и написано в документации:
When deactivating the collider the IgnoreCollision state will be lost and you have to call Physics2D.IgnoreCollision again.

IgnoreLayerCollision, по всей видимости, меняет матрицу взаимодействия слоёв, и отменить его так просто нельзя. Либо запоминайте то, что вы игнорировали, либо сохраняйте матрицу целиком с помощью GetIgnoreLayerCollision и GetLayerCollisionMask, а когда понадобится, так же целиком перезаписывайте текущую матрицу.

Ещё можно разрулить всё слоями и переносить либо движущиеся объекты между слоями, либо препятствия. IgnoreCollision это скорее костыль для особых ситуаций, повсеместно использовать его не стоит.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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