все так, но проблема вот в чем:
транспорт имеет координаты x1,y1,z1. транспорт НЕ ПЕРЕМЕЩАЕТСЯ в мире - это всего лишь закольцованный видеоролик с бегунком прокрутки (таймстампом), который прокручивается автоматически клиентом - но это отдельный разговор.
когда юнит заходит на корабль, этому юниту выставляется флаг (ON_TRASPORT) и в create и update пакетах начинают рассылаться дополнительные координаты ОТНОСИТЕЛЬНО корабля, x2, y2, z2.
благодаря выставленному флагу мы видим уплывающего юнита вместе с кораблем, если флаг не выставить - корабль уплывет, юнит будет стоят на месте и когда "земля уплывет из под ног", юнит плюхнется на землю или в воду.
так вот проблема: в момент захода на корабль координаты юнита становятся равны координатам корабля и не меняются в течении всего времени пребывания на корабле. любое движение юнита вроде как влечет за собой изменение его координат и если их сменить (напомню, они остались равны координатам корабля, который стоит на пристани), то юнит мгновенно телепортирует с уплывшего корабля на пристань, где визуально (подчеркиваю - визуально. фактически он там так и стоит, никуда не делся) корабля уже нет.
собственно решение проблемы: нельзя изменять основные координаты юнита, пока он на корабле и у юнита выставлен флаг, нужно изменять только относительные координаты.
т.е. что имеем: фактически - да, получается что юнит продолжает быть на месте корабля, стоящего на пристани. на сервере. и когда к этой пристани подбегает другой юнит, ему креатится корабль (с правильным таймстампом) и наш уплывший юнит тоже. только кретить его нужно правильно - с высталенным флагом и переданным гуидом корабля. тогда клиент отрисует отсутсвующий/подплывающий/уплывающий корабль и нашего юнита на нем. без всяких проблем.
основная проблема - правильный таймстамп в create пакете корабля. вторая проблема - правильный create для находящихся на этом корабле юнитов. ну, вторая проблема - не проблема вообще, а с первой так до сих пор никто и не разобрался еще. ну и еще существует третья проблема - как отслеживать момент захода плеера на транспортный ГО и момент когда юнит уходит с корабля (может это и не проблема тоже, но лично мне пока неизвестно).
нет никакой карты в карте. нужно все правильно реализовывать.
|