Изящно решить проблему с коллайдерами

Программирование на Юнити.

Изящно решить проблему с коллайдерами

Сообщение TonyMax 16 фев 2017, 03:07

Преамбула:
У меня есть домики. Домики я эти размещаю по клеточкам. Это происходит посредством смещения домика по X и Z на определенное число. В моем случае это число 5. Чтобы домики нельзя было строить друг на друге я использую BoxCollider'ы. Собственно, если коллайдеры домика ни соприкасаются с другими коллайдерами домиков, то строить можно.

Проблема:
BoxCollider'ы соприкасаются друг с другом там, где не должны по логике игры. Как именно они соприкасаются проиллюстрировано на картинке ниже. (h на картинке означает высоту)

Вопрос:
Как можно изящно решить данную проблему, избегая таких методов, как задать коллайдеры не 5, h, 5 (размер), а например, 4.99, h, 4.99?
Изображение
Последний раз редактировалось TonyMax 16 фев 2017, 14:29, всего редактировалось 1 раз.
TonyMax
UNец
 
Сообщения: 40
Зарегистрирован: 23 июн 2016, 14:54

Re: Изящно решить проблему с колладйреами

Сообщение bojlahg 16 фев 2017, 09:03

Если размещаешь по клеточкам то вообще коллайдеры не нужны, заведи 2d массив или список - карту по которой можно будет определить занята ли ячейка.
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: Изящно решить проблему с колладйреами

Сообщение TonyMax 16 фев 2017, 14:32

bojlahg писал(а):Если размещаешь по клеточкам то вообще коллайдеры не нужны, заведи 2d массив или список - карту по которой можно будет определить занята ли ячейка.

Я также этими коллайдерами делаю детект подвижных или объектов окружения (декоративного). Так что совсем я их не уберу.
TonyMax
UNец
 
Сообщения: 40
Зарегистрирован: 23 июн 2016, 14:54

Re: Изящно решить проблему с коллайдерами

Сообщение Tolking 16 фев 2017, 15:08

не хочешь убирать, а так можно убрать...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Изящно решить проблему с коллайдерами

Сообщение Zaicheg 16 фев 2017, 17:43

Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Изящно решить проблему с коллайдерами

Сообщение TonyMax 16 фев 2017, 18:54

Zaicheg писал(а):https://docs.unity3d.com/ScriptReference/Physics.IgnoreCollision.html

Physics.IgnoreCollisions(Collider, Collider) игнорирует всё взаимодействия между коллайдерами. Мне этого не нужно. Прочитайте внимательнее описание проблемы. И да, я умею читать документацию
TonyMax
UNец
 
Сообщения: 40
Зарегистрирован: 23 июн 2016, 14:54

Re: Изящно решить проблему с коллайдерами

Сообщение seaman 16 фев 2017, 19:14

Сделать коллайдеры чуть меньше, а при установке домика выравнивать позицию по сетке
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Изящно решить проблему с коллайдерами

Сообщение Zaicheg 16 фев 2017, 19:28

TonyMax писал(а):
Zaicheg писал(а):https://docs.unity3d.com/ScriptReference/Physics.IgnoreCollision.html

Physics.IgnoreCollisions(Collider, Collider) игнорирует всё взаимодействия между коллайдерами. Мне этого не нужно. Прочитайте внимательнее описание проблемы. И да, я умею читать документацию

Из описания проблемы следует, что вы определяете взаимопересечения домиков через коллайдеры. И хотите, чтобы некоторые коллайдеры не фиксировали пересечения с некоторыми коллайдерами. Устранять пересечения как таковые (что достигается изменением размеров и позиций коллайдеров) вы не хотите. Задача, которая получилась из вашего описания, решается указанным выше методом, судя по его описанию.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Изящно решить проблему с коллайдерами

Сообщение TonyMax 18 фев 2017, 19:07

seaman писал(а):Сделать коллайдеры чуть меньше, а при установке домика выравнивать позицию по сетке

На данный момент так и решил проблему :)
TonyMax
UNец
 
Сообщения: 40
Зарегистрирован: 23 июн 2016, 14:54

Re: Изящно решить проблему с коллайдерами

Сообщение TonyMax 18 фев 2017, 19:08

Zaicheg писал(а):
TonyMax писал(а):
Zaicheg писал(а):https://docs.unity3d.com/ScriptReference/Physics.IgnoreCollision.html

Physics.IgnoreCollisions(Collider, Collider) игнорирует всё взаимодействия между коллайдерами. Мне этого не нужно. Прочитайте внимательнее описание проблемы. И да, я умею читать документацию

Из описания проблемы следует, что вы определяете взаимопересечения домиков через коллайдеры. И хотите, чтобы некоторые коллайдеры не фиксировали пересечения с некоторыми коллайдерами. Устранять пересечения как таковые (что достигается изменением размеров и позиций коллайдеров) вы не хотите. Задача, которая получилась из вашего описания, решается указанным выше методом, судя по его описанию.

Вы неправильно поняли описание проблемы, возможно, потому что я дал не исчерпывающее объяснение
TonyMax
UNец
 
Сообщения: 40
Зарегистрирован: 23 июн 2016, 14:54


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5