Развитие игровой вспышки
Game Dev Blogs
Текущее время: Пн фев 27, 2017 8:23 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как построить железную дорогу?
СообщениеДобавлено: Вс апр 26, 2015 4:17 pm 
Не в сети

Зарегистрирован: Пн сен 26, 2011 8:04 am
Сообщений: 4
Всем привет. Всё никак не могу додуматься до одного простого алгоритма, и то ли лыжи не едут, то ли действительно не находится оно в гугле. В общем прошу прощения заранее если 10 раз было и я просто не докопался, но вопрос такой: как сделать железную дорогу со стрелками? Делаю на unity3d, но в целом мне важен сам алгоритм перехода состава с сегмента на сегмент и переключение стрелок. Приложил картиночку схематичную как должно быть: красные стрелки - это куда переключены стрелки (тавтология какая-то), то есть насыщенные - те, куда поедет состав.
Заранее спасибо за помощь :oops:


Вложения:
railway.png
railway.png [ 61.81 KIB | Просмотров: 2766 ]
Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Как построить железную дорогу?
СообщениеДобавлено: Вс апр 26, 2015 6:03 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Пт авг 16, 2013 12:50 am
Сообщений: 222
На первый взгляд все просто - железная дорога представляет собой связный список сегментов, стрелка - еще один список. Чтобы переключить стрелку, надо поменять ссылку на текущий сегмент.
Где именно возникла проблема?


Вложения:
railway.png
railway.png [ 38.9 KIB | Просмотров: 2739 ]
Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Как построить железную дорогу?
СообщениеДобавлено: Вс апр 26, 2015 8:21 pm 
Не в сети

Зарегистрирован: Пн сен 26, 2011 8:04 am
Сообщений: 4
Ну у меня было сделано так, что каждый сегмент знает какой у него следующий сегмент, а стрелка просто переключает для конкретного сегмента ссылку на следующий. И это работает если поезд всегда ездит в одном направлении, но при помощи стрелок можно его развернуть в обратном направлении и тут получается косяк.
Или маршрут должен как-то динамически строится исходя из текущего положения поезда? Или если сегмент знает своих двух соседей, то как тогда определить в какую сторону движется поезд?
Я явно где-то затупляю, но не пойму где.


Вложения:
railway2.png
railway2.png [ 80.15 KIB | Просмотров: 2710 ]
Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Как построить железную дорогу?
СообщениеДобавлено: Вс апр 26, 2015 9:24 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Пт авг 16, 2013 12:50 am
Сообщений: 222
DarthWaxus писал(а):
Или если сегмент знает своих двух соседей, то как тогда определить в какую сторону движется поезд?

По предыдущему положению поезда? Переходим не на того соседа, с которого пришел поезд.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Как построить железную дорогу?
СообщениеДобавлено: Вс апр 26, 2015 9:58 pm 
Не в сети

Зарегистрирован: Ср апр 06, 2011 12:31 pm
Сообщений: 2488
Откуда: Moscow
Сайт: http://stranger087.com
Artees писал(а):
DarthWaxus писал(а):
Или если сегмент знает своих двух соседей, то как тогда определить в какую сторону движется поезд?

По предыдущему положению поезда? Переходим не на того соседа, с которого пришел поезд.


а если две рельсины в кольцо соединены? :lol:

Автор, мы не знаем как у тя сделано движение поезда, поэтому сложно чет посоветовать)


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Как построить железную дорогу?
СообщениеДобавлено: Пн апр 27, 2015 4:36 pm 
Не в сети

Зарегистрирован: Пн сен 26, 2011 8:04 am
Сообщений: 4
Вот кстати не додумался сделать так чтобы не переходил на предыдущую рельсу. Спасибо, надо попробовать. Думаю две рельсы в кольцо не будут соединены. Ну а вообще пока что поезд знает свою текущую рельсу и едет к следующей, ссылку на которую берет из текущей.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Как построить железную дорогу?
СообщениеДобавлено: Вс ноя 22, 2015 12:55 am 
Не в сети
Аватар пользователя

Зарегистрирован: Ср авг 12, 2009 6:51 pm
Сообщений: 544
Откуда: Москва
Сайт: http://romamik.com
Отвечу, хоть и старый вопрос. Вдруг кому интересно...

Базовая идея простая: поезд должен знать, в какую сторону он едет.
Для этого у сегмента должно быть направление, а поезд должен знать едет он вперед или назад вдоль сегмента. Сегменты могут быть соединены как концом к началу, так и концом к концу или началом к началу. При втором варианте при смене сегмента поезд меняет направление относительно сегмента.
Все это несложно в теории: сегмент имеет длину L и положение на нем изменяется от 0 до L, ссылки на предыдущий и следующий сегмент, при этом для каждого сегмента указывается меняется ли направление при переходе на него. Тогда переход с сегмента на сегмента разбивается на такие случаи:
1. Движемся вперед, направление не меняется: новое положение - 0, направление вперед
2. Движемся вперед, направление меняется: новое положение L(нового сегмента), направление назад
3. Движемся назад, направление не меняется: новое положение L(нового сегмента), направление назад
4. Движемся назад, направление меняется: новое положение - 0, направление вперед

В моей игре Railroad Shunting Puzzle сегменты путей прокладываются на сетке, все имеют одинаковую длину и проходят через центр клетки. Пользуясь этим я все немного упростил: один сегмент, это на самом деле два сегмента, начало у них в центре клетки, а концы на границах клетки. Таким образом при переходе с сегмента на сегмент направление всегда меняется, и остается два случая вместо четырех.

Стрелки сделаны просто: стрелка это обычный сегмент, но он меняется на другой сегмент при щелчке по нему.

А что за игру делаешь или уже сделал? Есть что показать? Интересно.


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB