Что такое коллайдер в юнити
Перейти к содержимому

Что такое коллайдер в юнити

Composite Collider 2D

Composite Collider 2D компонент Функциональная часть GameObject. GameObject может содержать любое количество компонентов. В Unity есть много встроенных компонентов, и вы можете создавать свои собственные, написав сценарии, которые наследуются от MonoBehaviour. Подробнее
См. в Словарь – это Коллайдер Невидимая форма, используемая для обработки физических столкновений объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее
См. в Словарь , который взаимодействует с системой 2D-физики. В отличие от большинства коллайдеров, он не определяет внутреннюю форму. Вместо этого он объединяет формы любого Box Collider 2D или Polygon Collider 2D, которые вы настроили для использования. . Composite Collider 2D использует вершины (геометрию) любого из этих коллайдеров и объединяет их вместе в новую геометрию, управляемую самим Composite Collider 2D.

Оба Box Collider Компонент коллайдера в форме куба, который обрабатывает коллизии игровых объектов, таких как игральные кости и кубики льда. Подробнее
См. в Словарь Компоненты 2D и Polygon Collider 2D имеют Использовано Составной флажок. Установите этот флажок, чтобы прикрепить их к Composite Collider 2D. Эти коллайдеры также должны быть прикреплены к тому же железному телу 2D, что и составной 2D-коллайдер. Когда вы включаете параметр Используется композитом, другие свойства этого компонента исчезают, так как теперь они контролируются подключенным двухмерным композитным коллайдером.

Дополнительную информацию о сценариях с помощью CompositeCollider 2D см. в документации API CompositeCollider2D.

Свойства Функции
Density Измените плотность, чтобы изменить расчет массы GameObject, связанного Rigidbody Компонент, позволяющий воздействовать на GameObject смоделированной гравитацией и другими силами. Подробнее
См. в Словарь 2D. Если вы установите значение 0, связанный с ним Rigidbody 2D игнорирует Collider 2D для всех расчетов масс, включая расчеты центра масс. Обратите внимание, что этот параметр доступен только в том случае, если вы включили параметр Использовать автомассу в связанном компоненте Rigidbody 2D.
Material PhysicsMaterial2D Используйте для регулировки трения и отскока, возникающего между 2D-материалами. физические объекты при их столкновении Подробнее
См. в Словарь , определяющий свойства класса collisions Столкновение происходит, когда физический движок обнаруживает, что коллайдеры двух игровых объектов соприкасаются или перекрываются, когда хотя бы один из них имеет компонент Rigidbody и в движении. Подробнее
См. в Словарь , такие как трение и отскок.
Is Trigger Установите этот флажок, если хотите, чтобы Composite Collider 2D вел себя как триггер (см. обзорную документацию по коллайдерам, чтобы узнать больше о триггерах).
Used by Effector Установите этот флажок, если хотите, чтобы Composite Collider 2D использовался присоединенным компонентом Effector 2D.
Offset Установите локальное смещение двухмерной геометрии коллайдера.
Geometry Type При объединении коллайдеров вершины из выбранных коллайдеров объединяются в один из двух разных типов геометрии. Используйте это раскрывающееся меню, чтобы задать тип геометрии: Контуры или Многоугольники.
Outlines Создает 2D-коллайдер с полыми контурами, идентичный тому, что создает 2D-коллайдер.
Polygons Создает 2D-коллайдер со сплошными многоугольниками, идентичный тому, что создает 2D-полигональный коллайдер.
Generation Type Метод, используемый для управления генерацией геометрии при изменении двухмерного композитного коллайдера или любого из составляющих его коллайдеров.
Synchronous Когда в Composite Collider 2D или любом из используемых им коллайдеров вносятся изменения, Unity немедленно генерирует новую геометрию.
Manual Генерация новой геометрии происходит только по запросу. Чтобы запросить генерацию, либо вызовите API скрипта CompositeCollider2D.GenerateGeometry, либо нажмите кнопку Regenerate Geometry, которая появляется под выбором .
Vertex Distance Установите значение минимального интервала, разрешенного для любых вершин, собранных из составных коллайдеров. Любая вершина ближе этого предела удаляется. Это позволяет контролировать эффективное разрешение компоновки вершин.
Edge Radius Управляет радиусом вокруг ребер, чтобы вершины были круглыми. Это приводит к большему коллайдеру 2D с закругленными выпуклыми углами. Значение по умолчанию для этого параметра равно 0 (без радиуса). Это работает, только если для параметра Тип геометрии установлено значение Контуры.

Как сделать коллайдер по текстуре персонажа юнити?

Существует модель персонажа, соответственно у нее при проигрывании разных анимаций двигаются руки/ноги.Для обработки столкновений с ней нужен коллайдер точно по текстуре. Каким образом можно сделать так чтобы коллайдер был точно по текстуре персонажа и двигался в соответствии с анимацией?

Отслеживать
задан 18 дек 2021 в 13:00
11 5 5 бронзовых знаков
Текстура — это ж просто картинка. Вы имеете в виду 3д модель?
18 дек 2021 в 13:03

Русские «геймеры» любую поверхность колхозно называют текстурой. Как например баг «out of bounds» у нас называют «провалился под текстуры».

18 дек 2021 в 13:43
Да, имею ввиду модель
19 дек 2021 в 14:07

1 ответ 1

Сортировка: Сброс на вариант по умолчанию
Отслеживать
ответ дан 18 дек 2021 в 23:06
Andrew Stop_RU_war_in_UA Andrew Stop_RU_war_in_UA
19k 6 6 золотых знаков 35 35 серебряных знаков 98 98 бронзовых знаков

пожалуйста, постарайтесь оставлять чуть более развёрнутые ответы. дополнить ответ можно, нажав править

19 дек 2021 в 7:06

@aleksandrbarakin в смысле чуть более развернутые ответы? Человек знает как применять коллайдер но не знает про существование MeshCollider. Что можно развернутее ответить? Расписать каждое действие мышкой? Издеваешся?

19 дек 2021 в 12:53

ну вообще стоило написать это комментарием. но раз уж взялись за ответ, так, наверно, стоит написать его хорошо. ориентируясь, например, на топ: ru.stackoverflow.com/search?tab=votes&q=is%3aa

19 дек 2021 в 12:56

@aleksandrbarakin ты использовал юнити? Нет? Тогда давай я проведу аналогию. У тебя спрашивают «Как мне записать число с точкой? А то Integer не подходит» и ты пишешь ответ «Используй Double » а я, например, к твоему ответу придолбался и говорю «оставляй более развернутый ответ». Вот ровно это только что случилось. Этот ответ является полным и исчерпывающим.

Не определяется столкновение с коллайдером в юнити

У меня есть два босса. У обоих я скопировал все их коллайдеры на один компонент, а с остальных компонентов удалил.. и для этих компонентов, где собраны все коллайдеры, сделал проверку на столкновение с ракетой. То есть если игрок стреляет в босса, то коллайдер ракеты сталкивается с одним из коллайдеров босса. И для первого босса столкновение определяется, а для второго почему то нет — ракеты пролетают сквозь него..

public class ShootableBox : MonoBehaviour < public int health; private void OnCollisionEnter(Collision collision) < if (collision.gameObject.tag == "bullet") < health -= 1; >> >

1 | Не определяется столкновение с коллайдером в юнити

Босс 1:

2 | Не определяется столкновение с коллайдером в юнити

Босс 2:

Первый босс летает, поэтом у него в родительском объекте есть анимация, которая по кругу его перемещает вокруг поля боя.
А второй босс ходит по земле с помощью компонента NavMeshAgent, который у него тоже в родительском объекте.

#1
21:33, 11 окт 2017

Может снаряды летят слишком быстро и пролетают сквозь коллайдер?

  • greencrazycat
  • Постоялец

#2
21:49, 11 окт 2017

в документации в Details есть некоторые советы по корректному использованию MeshCollider, а вообще да, есть заморочки с MeshCollider

#3
0:10, 12 окт 2017

KumoKairo
> Может снаряды летят слишком быстро и пролетают сквозь коллайдер?
С первым боссом нет проблем

greencrazycat
> в документации в Details есть некоторые советы по корректному использованию
> MeshCollider, а вообще да, есть заморочки с MeshCollider
Я у второго пробовал BoxCollider ставить, не помогло

  • greencrazycat
  • Постоялец

#4
1:51, 12 окт 2017

dmitrykozyr
> Я у второго пробовал BoxCollider ставить, не помогло
мы у себя пока отказались от OnCollisionEnter в пользу райкаста, была подобная проблема и не было желание её решать

#5
2:11, 12 окт 2017

Кинематики-то висят на боссах?

#6
14:44, 12 окт 2017

arcturgray
> Кинематики-то висят на боссах?
Да

#7
15:23, 12 окт 2017

Насколько я помню из документации, только convex mesh collider’ы можно использовать вместе с Rigidbody.

А вообще Юнити рекомендует не использовать mesh collider’ы для динамиков, только для статиков, потому что mesh collider’ы стоят дорого, а уж не отмеченные как Convex — очень дорого.

Поэтому тебе лучше сочетать на боссах только примитивы и в крайнем случае convex mesh collider’ы.

Если это не поможет, то можно попробовать для rigidbody ракеты установить Continuous Dynamic, а для боссов — просто Continuous.

#8
18:36, 12 окт 2017

Думаю проблема в перемещении летающего босса, я так понимаю ты изменяешь положение transform из под аниматора. Желательно перемещать саму rigidbody, а не transform

#9
18:41, 12 окт 2017

Ну и для таких дел обычно еще меняешь fixed timestep в настройках Time

#10
18:53, 12 окт 2017

Вроде как чтобы срабатывали OnCollision евенты нужно чтобы хотя бы на одном из объектов был Rigidbody. У рабочего босса возможно у родительских обьектов есть Rigidbody,у другого — нет.

#11
19:31, 12 окт 2017

Сделал все как посоветовали, не помогло. Решил проверить имя объекта, с которым сталкивается ракета. Им оказался объект с Rigidbody. А объект с коллайдером — это его дочерний объект (сделал один большой BoxCollider). Не понимаю, почему до дочернего объекта ракета не долетает, ведь коллайдер же у него находится.

2 | Не определяется столкновение с коллайдером в юнити

#12
19:43, 12 окт 2017

Это называется compound collider. Если у какого-то объекта есть Rogidbody, а у его детей, внуков и тп — коллайдеры, то эти коллайдеры действуют как один большой коллайдер родителя.

#13
19:50, 12 окт 2017

arcturgray
> Это называется compound collider. Если у какого-то объекта есть Rogidbody, а у
> его детей, внуков и тп — коллайдеры, то эти коллайдеры действуют как один
> большой коллайдер родителя.
Ох уж мне все эти тонкости)))) Заработало, всем спасибо

unity определить другие коллайдеры которые пересекаются с моим коллайдером

Пытаюсь найти как сделать такое, казалось бы, простое действие.

К примеру у меня есть объект (завод/шахта), к этому объекту я добавил 2d box collider. Также я добавил ему скрипт Factory.cs В этом скрипте есть к примеру функция (аля корутина) void Dig() которая раз в секунду хочет проверить какие ресурсы есть в области коллайдера завода и выкопать их.

Мои попытки нагуглить как это сделать приводят к достаточно старым вопросам на answers.unity.com ~2013 года где в ответе говорят что либо это невозможно. Либо что нужно руками добавлять в список при OnTriggerEnter2D, и удалять при OnTriggerExit2D. Либо предлагают метод поиска коллайдеров в области сферы / коробки — а не любых коллайдеров

Мне такое решение кажется ну очень неудобным и непонятным. Также оно не работает без добавления rigitbody2D.

Неужели в 2020 нет удобного способа посмотреть с кем мой объект пересекается?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *