Страница 1 из 1

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

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

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

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

Заранее спасибо, надеюсь с пикчей всё будет понятно и кто нибудь сможет помочь. :-?

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

СообщениеДобавлено: 27 май 2017, 00:15
Shock
Это рядовая алгоритмическая задача, часов на 20 программирования. Увы, какого-то прям ответа на ваш вопрос нету - необходимо садиться и делать.

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

СообщениеДобавлено: 27 май 2017, 07:35
Valentinus
да ладно, какие тут 20 часов :)

создаете ГО кусочка прямого участка. слева и справа ему присоединяете два дочерних ГО, пустых внешне, но с коллайдерами (чтоб чуяли raycast) . при клике мыши отслеживаете попадания на эти ГО. и соответственно заменяете ГО прямого участка на "тройник", с ответвлением вправо или влево (смотря в какую пустышку кликнули мышью).
можно еще к прямому участку привесить "пустышки" не только слева справа, а вообще по восьми направлениям, и соответственно добавлять продолжения (если клик вверху, внизу), или повороты (если клики по диагонали)

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

СообщениеДобавлено: 27 май 2017, 09:17
samana
Все ваши дороги ведь состоят из квадратных участков? И эти дороги насколько я вижу только горизонтальные и вертикальные. То-есть получается вся ваша карта дорог - это поле в клеточку. Почему бы просто после каждого нарисованного пользователем участка дороги (клеточка) не пробежаться в цикле по всем (или ближайшим) клеточкам дороги и в зависимости от того со скольких сторон есть клеточка дороги - рисовать нужный спрайт (перекрёсток, Т-образный и тп.)?
То-есть ваше поле это двумерный массив, где 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 рассчитать все возможные варианты перекрёстков и стыковок и рисовать нужный участок.

Объяснить что-то не получается толково, но может это наведёт вас на какую-то полезную мысль.