Суббота, 23 Ноября 2024, 00:31

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Логика для сетчатого поля боя
FunAppleДата: Понедельник, 08 Февраля 2016, 23:31 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Хочу сделать что-нибудь, на чем можно было бы играть в пошаговые игры, где персонажи перемещаются по локации в виде квадратной сетки, соответственно, где каждая клетка поля - если один шаг персонажа. Цель - создать логику, которая просчитывала бы и отображала возможную дальность, куда может утопать персонаж.
Я сделал то, что, думал, будет хоть близко работать (наивный)
Видео с работой функции
Вкратце поясню: поле генерируется при старте из плит, каждой плите присваиваются переменные Xcoord и Ycoord от нуля и так далее. Схема предполагала что: при наведении на плитку активируем эвент и вводим в него переменную, указывающую, какое расстояние проверяем (кол-во клеток), в эвенте берем все плитки и у проверяем у каждой сверяем координаты X и Y относительно плитки, в которой и происходит эвент, если выполняется условие что проверяемая плитка находится на расстоянии 1 или -1 по одной из осей, и равняется нулю на другой оси, то в ней ставим булевую переменную NeedToBeChecked 1. Когда цикл закончился, то ставим булевую переменную Checked 1 в той плитке, в которой проходил эвент и устанавливаем ей другой материал (помечаем, что тут ход будет возможен), затем проверяем, остались ли еще ходы, если остались, то кастуем на все плиты, и если имеются такие, в которые установлена переменная NeedToBeChecked 1 и она еще не проходила данную проверку Checked = 0, то в ней выполняем данный эвент.
Собственно, что получилось, все видно.. бяка та еще... Собственно, где кроется ошибка? И, может, есть варианты попроще сделать нечто подобное?


<глупость> Ищу новичка напарника, напарницу или небольшую команду для освоения игростроительных инструментов (гейм-дизайн, сюжет, моделирование, озвучка и т.д. желательно упор в UE) в районе Зеленограда или Солнечногорска </глупость>

Сообщение отредактировал FunApple - Понедельник, 08 Февраля 2016, 23:32
giperionДата: Пятница, 26 Февраля 2016, 21:18 | Сообщение # 2
участник
Сейчас нет на сайте
Достаточно простая задача, только лучше делать в C++, а то блупринты раздуются непомерно, да и тормозить будет.
Рекурсивный обход графа нодов, с вычислением желаемого направления через эту дичь.


Skype: sergej_1965
cibergodДата: Понедельник, 07 Марта 2016, 00:37 | Сообщение # 3
был не раз
Сейчас нет на сайте
Глянь я тему замутил может поможет тебе Про сетчатые блоки как раз )

Юнный недоигродел (( но очень стремлюсь
Даже сайт завел cibergod.ru
Но пока особо нечем хвастать
Dark_geoДата: Понедельник, 07 Марта 2016, 03:13 | Сообщение # 4
был не раз
Сейчас нет на сайте
Свои пять копеек. Т.Н. "волновой" метод - для поиска пути. Реализовывал правда на другом движке. Идея вкратце. Есть пункт А с координатами x y, пункт B - куда надо прийти. Создаем массив x,y -со значением 0. Начинаем отсчет с пункта А. Вычисляем ближайшие к А "проходимые" ячейки со значением 0 и присваиваем им значение 1 (шаг). Далее от каждой ячейки со значением 1 находим "незанятые" (со значением 0) и присваиваем им значение шага 2. Далее берем 2 и ближним присваиваем значение 3. И так до тех пор, пока ячейка не оказывается пунктом B. Или не остается ячеек со значением 0 (в этом случае путь невозможен). Если проход вообще возможен - за старт берется пункт B и вычисляется ближайшая ячейка с значением максимальный шаг-1. (Возможных путей может быть несколько, т.е. несколько ячеек с нужным значением, выбор их можно сделать случайным). Всем ячейкам (кроме выбранной) со значением шаг-1 возвращается 0. Далее от найденной ячейки (шаг-1) вычисляется ближайший квадрат со значением шаг-2 (ему значение остается, остальным 0). И так до тех пор, пока на возвращаемся к точке А. Путь найден - по ячейкам со значением 1-2-3 и т.д. В общем не одно, а несколько вычислений, но реально работает - находится кратчайший путь (их может быть несколько).
В случае, если количество шагов ограничено и нужно покрасить доступные для движения квадратики, то расчет "проходимости" прерывается на максимальном шаге - все со значением больше 0 красится, остальные - нет.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг