Gameobject персонажа не должен падать вниз и улетать вверх

Предположим на сцене есть персонаж, у которого произошло проигрывание анимации "Смерть". Мне нужно чтобы на него нельзя было натыкаться после проигрывания этой анимации(то есть я управляю другим персонажем и могу на него наступить), то есть BoxCollider2d у него должен отключен быть, хорошо я это сделал. Но так как персонаж стоит на земле, у которой подключен Collider, мне не надо, чтобы персонаж проваливался вниз, а надо, чтобы он оставался на исходной позиции. Есть ли ещё способ, который не использует свойство GravityScale у компонента RigidBody2d, потому, что может возникнуть такая ситуация, что игрок бьет врага, враг подпрыгивает во время получения урона(а именно такая у меня ситуация) и сразу же проигрывается такая анимация и GravitiScale устанавливается в 0, в результате чего персонаж улетает на верх.

Вот код:

if(dead){ 
    animator.SetBool("IsDead",true"); 
    GetComponent<Collider2D>().enabled = false;
}

Что нужно добавить в этот блок, чтобы решить проблему, которую я описал?


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

Автор решения: Pantheon

Сделай так что бы объекты определённых layer'ов не пересекались с другими.

А именно: Edit -> Progect Settings -> Physics 2D

В разделе Layer Collision Matrix убери галочку на пересечении например layer'ов Water и TransparentFX, теперь обладатели этих слоёв не будут сталкиваться.

Назначь Игроку слой Water, а врагу и полу слой Default. Затем в код вставляем вот этот фрагмент.

if(dead){ 
    animator.SetBool("IsDead",true); 
    GetComponent<Collider2D>().enabled = false;
    gameObject.layer = LayerMask.NameToLayer("TransparentFX");// меняет слой объекта к которому прикреплён скрипт на другой в данном случае на TransparentFX
}

Возможно у тебя не будет выше перечисленных слоёв в таком случае можешь создать свои и назвать их Player, Enemy в общем как хочешь. введите сюда описание изображениявведите сюда описание изображения

→ Ссылка