![]() |
![]() ![]() |
![]() |
AlienEmperor |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация: ![]() ![]() ![]() |
Господа! Собственно, такой вопрос: как Вы считаете - какой оптимальный путь создания системы перемещения для turn-based RPG ? Т.е. по своей сути, в такого рода игре (взять тот же Fallout) игрок не может переместиться в *любую* точку ландшафта - он может только встать на некую клетку, за счет чего возможно просчитать сколько ходов он потратил на перемещение. Но это вносит свои ограничения: в Fallout, например, направлений движения (поворот игрока) - всего 6. Даже если сделать 8, то система уже рушится, появляются "мертвые" точки, в которые попасть просто не реально. Предположим, что взяли 6 направлений (как в Fallout и Heroes of Migth & Magic) , тогда как, по Вашему: надо делать пересчет передвижения игрока по матрице (двумерный вариант изометрической карты), а потом двигать его по клеткам ? Есть ли другой способ ? Особенна актуальна проблема оружия: к примеру - при выстреле из "базуки" снаряд должен лететь явно "из точки в точку", т.е. никак не по клеткам, как в таком случае просчитать столкновение хотя бы со стеной (она-то на клетках) ? В общем, если есть предложения или ссылки на готовые алгоритмы, я был бы очень благодарен за них...
-------------------- Все в жизни ботва... Кроме пчел!
|
Shura |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 136 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Нужно просто пронумеровать все ячейки построчно, а потом как-нибудь, скажем, раздвинуть строки и сдвинуть столбцы, ну или что-то типа того. Вот пример для 6-гранных ячеек:
Пример преобразования (2 Кб) P.S. Только законы перемещения объектов по получившейся обычной матрице будут не совсем обычными. Сообщение отредактировано: Shura - 20.10.2005 19:03 -------------------- Старайтесь восполнять пробелы в области незнания! ;-D
|
AlienEmperor |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация: ![]() ![]() ![]() |
В принципе, так я и представлял... Спасибо за наглядную картинку. Насчет передвижения: это заметно по Fallout: он там любит "конем" ходить
![]() -------------------- Все в жизни ботва... Кроме пчел!
|
P@sh@ |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
насчет стрельбы через квадратную сетку, я когда-то делал подобие х-кома - тактический боевик, тут выкладывал немного недоделанную версию, там это есть:
http://forum.pascalnet.ru/index.php?showtopic=1654&st=160 во втором посте |
SKVOZNJAK |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Для расчётов перемещения точки за 1 шаг можно использовать не клетки а расстояния. После чего помещать точку в ближайшую клетку - округлять результат. Поле - прямоугольник разбитый на клетки, точка перемещается по направлению из точки А в точку Б. Соединяем А и Б отрезком, отмеряем на нём расстояние которое могла преодалеть точка при заданной скорости, округляем значение до клетки.
|
![]() ![]() |
![]() |
Текстовая версия | 14.07.2025 20:34 |