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:
Босс 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). Не понимаю, почему до дочернего объекта ракета не долетает, ведь коллайдер же у него находится.
#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 нет удобного способа посмотреть с кем мой объект пересекается?