Gameobject персонажа не должен падать вниз и улетать вверх
Предположим на сцене есть персонаж, у которого произошло проигрывание анимации "Смерть". Мне нужно чтобы на него нельзя было натыкаться после проигрывания этой анимации(то есть я управляю другим персонажем и могу на него наступить), то есть BoxCollider2d у него должен отключен быть, хорошо я это сделал. Но так как персонаж стоит на земле, у которой подключен Collider, мне не надо, чтобы персонаж проваливался вниз, а надо, чтобы он оставался на исходной позиции. Есть ли ещё способ, который не использует свойство GravityScale у компонента RigidBody2d, потому, что может возникнуть такая ситуация, что игрок бьет врага, враг подпрыгивает во время получения урона(а именно такая у меня ситуация) и сразу же проигрывается такая анимация и GravitiScale устанавливается в 0, в результате чего персонаж улетает на верх.
Вот код:
if(dead){
animator.SetBool("IsDead",true");
GetComponent<Collider2D>().enabled = false;
}
Что нужно добавить в этот блок, чтобы решить проблему, которую я описал?
Ответы (1 шт):
Сделай так что бы объекты определённых 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 в общем как хочешь.

