Создание линии с секциями

Общие вопросы о Unity3D

Создание линии с секциями

Сообщение justDaemon 26 май 2017, 20:23

Здравствуйте многоуважаемые игроделы!
В Unity новичок, разрабатываю что то на подобии градостроительного симулятора в 2d, но со своими особенностями. Столкнулся с проблемой, не знаю как решить, поэтому обращаюсь сюда к вам.
В городе есть дороги, каждая прямая/поворот/перекрёсток отдельный объект, задача в том что бы строить новые дороги самостоятельно, но с условием что точки начала и конца постройки должны соединятся с уже существующими дорогами. Для реализации таких построек нужно как то сделать что бы вдоль существующих дорог (объектов) с обоих сторон создавалась линия поделённая на секции, что бы в дальнейшем "пристыковывать" постройку к существующей дороге. Понимаю что объяснять не очень хорошо получается, поэтому прикрепляю картинку.
Собственно вопрос в том как создать такую линию скажем из объектов куб с двух сторон у каждой дороги/поворота/перекрёстка?

ссылка на пикчу https://drive.google.com/file/d/0B9IgWX ... sp=sharing
Синим те линии которые должны быть сгенерированы при запуске, а красным показано зачем вообще нужны эти зоны и как это пристыковка должна выглядеть.

Либо есть второй вариант, что бы такая линия с секциями создавалась прям на существующей дороге, возможно так даже будет лучше, возможно этот вариант перспективней, что скажете?

Заранее спасибо, надеюсь с пикчей всё будет понятно и кто нибудь сможет помочь. :-?
justDaemon
UNец
 
Сообщения: 8
Зарегистрирован: 26 май 2017, 19:44

Re: Создание линии с секциями

Сообщение Shock 27 май 2017, 00:15

Это рядовая алгоритмическая задача, часов на 20 программирования. Увы, какого-то прям ответа на ваш вопрос нету - необходимо садиться и делать.
Аватара пользователя
Shock
UNIт
 
Сообщения: 77
Зарегистрирован: 10 окт 2016, 18:22

Re: Создание линии с секциями

Сообщение Valentinus 27 май 2017, 07:35

да ладно, какие тут 20 часов :)

создаете ГО кусочка прямого участка. слева и справа ему присоединяете два дочерних ГО, пустых внешне, но с коллайдерами (чтоб чуяли raycast) . при клике мыши отслеживаете попадания на эти ГО. и соответственно заменяете ГО прямого участка на "тройник", с ответвлением вправо или влево (смотря в какую пустышку кликнули мышью).
можно еще к прямому участку привесить "пустышки" не только слева справа, а вообще по восьми направлениям, и соответственно добавлять продолжения (если клик вверху, внизу), или повороты (если клики по диагонали)
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Создание линии с секциями

Сообщение samana 27 май 2017, 09:17

Все ваши дороги ведь состоят из квадратных участков? И эти дороги насколько я вижу только горизонтальные и вертикальные. То-есть получается вся ваша карта дорог - это поле в клеточку. Почему бы просто после каждого нарисованного пользователем участка дороги (клеточка) не пробежаться в цикле по всем (или ближайшим) клеточкам дороги и в зависимости от того со скольких сторон есть клеточка дороги - рисовать нужный спрайт (перекрёсток, Т-образный и тп.)?
То-есть ваше поле это двумерный массив, где 0 - это отсутствие дороги, а 1 - дорога.

[0,0,0,1,0,0,0,0,0]
[0,1,0,1,0,0,0,0,0]
[0,1,1,1,1,1,1,1,0]
[0,0,0,0,0,0,1,0,0]
[0,0,0,0,0,0,1,0,0]

Затем пробегаетесь по всему этому массиву и смотрите - какие значения окружают каждый отдельное значение. Через case или if else if рассчитать все возможные варианты перекрёстков и стыковок и рисовать нужный участок.

Объяснить что-то не получается толково, но может это наведёт вас на какую-то полезную мысль.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск


Вернуться в Общие вопросы

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

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