Ответ: Реализация поезда
Над проблемами движения локомотивов и вагонов по рельсам, следованию вагонов за поездом и пр. бился достаточно долго. Переходил от одной реализации к другой.
Остановился на таком варианте (в 3d-пространстве). Ж\д-полотно - это набор геометрических точек, т.е. цепочек объектов. Отдельные цепочки связаны между собой т.н. узлами или "стрелками". Локомотив располагается в n-ую точку цепи и начинает движение к следующей точке. Приращение может быть как положительным, так и отрицательным. Движется он к следующей n+1 или n-1 точке в цепи. Но, как верно отметил Pax, у поезда 2 пары тележек, т.е. два центра вращения. Соответственно, мы движем набор из двух тележек с фиксированным расстоянием и определяем координаты x,y,z средней точки между ними (на примере blitz3d). mid_x#=EntityX(e1)+(EntityX(e2)-EntityX(e1))/2 mid_z#=EntityZ(e1)+(EntityZ(e2)-EntityZ(e1))/2 mid_y#=EntityY(e1)+(EntityY(e2)-EntityY(e1))/2 В точку с такими координатами помещаем модель нашего поезда. Ландшафт может иметь подъёмы, спуски, поэтому помещать модель в эту точку при движении будет правдоподобнее. Далее определяем разницу углов между следующей рельсой и поездом. dy#=DeltaYaw(r\ent,tr\ent) dp#=DeltaPitch (r\ent,tr\ent ) и постепенно уменьшаем вращением модели эту разницу - поезд будет входить в повороты, плавно спускаться с гор и пр. Итак, последовательность всех колёсных тележек поезда и вагонов - это своего рода змейка. Тут всё просто - движем каждую тележку с одинаковой скоростью и вагоны покатятся следом за локомотивом (каждая из них будет в точности повторять траекторию движения предыдущей). Это вкратце. |
Часовой пояс GMT +4, время: 23:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot