Движение производится potential_step. В плане линейного даже не знаю, может он и лучше, в принципе, но сложнее. Есть еще одна проблема, это воздушные юниты, они пока что не умеют преодолевать маску столкновения, а именно здания, юнитов, а также горы, соответственно взлета и посадки тоже нет, хотя это не самое главное. Далее. Размер клеток, как в TS - 48x24, по крайней мере вся карта построена на них, ниже я прилепил скриншот, где показано, сколько места занимают юниты, практически 1х1, но самое интересное, что размер клетки может определяться не по самому спрайту, а по его маске, а она может быть любой формы. Если брать алгоритм TS и RA2, то там можно иногда заметить, что юниты залезают друг на друга, когда их много, но стараются не сбиваться в кучу. Движение хотелось бы улучшить, как показано на второй картинке, если это вообще возможно. Дукат, я смотрел твой код, даже пробовал туда для теста свои спрайты поставить, вроде бы движение нормальное, по крайней мере оно не плывет, как сейчас.
Ну, а остальные баги пока еще не исправить, а именно: бег на месте, если рядом подъезжает танк или другая техника, а бывает они бегают вокруг здания, тем самым сдают кросс, и конечно же стрельба, иногда думают - стрелять или подождать. Единственное радует, что постройка теперь адекватная, разметочная сетка очень помогла. И еще, технический уровень, пока еще не знаю, как его написать...
P.S. Кстати, в Starcraft II тоже есть баги со столкновениями, особенно, когда юнит просчитывает самый короткий путь, и лезет именно туда и застревает, нет чтобы объехать где свободно.
Группа: Пользователи
Сообщений: 2 213
Регистрация: 8.6.2009
Из: Ростов-на-Дону, Красная зона
Пользователь №: 3 277 Поблагодарили: 554 раз
Цитата(Shur @ 11.11.2011, 1:49)
P.S. Кстати, в Starcraft II тоже есть баги со столкновениями, особенно, когда юнит просчитывает самый короткий путь, и лезет именно туда и застревает, нет чтобы объехать где свободно.
Да там вообще танки боком могут ехать.
Вчера вечером (почему у меня всё время "вчера?") я наконец разобрался с алгоритмом G-Pathfinding (там было что если расстояние от предпоследней до последней точки больше 1 клетки то юнит застревал, а если доезжял то ехал в 0,0). Осталось дописать пару вещей, и практически алгоритм готов. Кстати, там можно настроить так, что юнит может быть размером даже 100*500. Только ещё нужно будет разобраться, что будет если на пути этого 100*500 будет непроходимая местность, или болото.
EDIT: Ну и конечно же, юниты должны уметь останавливаться в некотором расстоянии от цели. Про кучу: вот здесь я не имею представления как это сделано, скорее всего берётся сфера с неким радиусом, чей радиус увеличен прямо пропорционально количеству юнитов, и в этой сфере юниты находятся на одинаковом расстоянии друг от друга.