Среда, 10 Августа 2022, 20:38

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Комбо в файтинге (gml)
Комбо в файтинге
Rikstone26Дата: Вторник, 30 Июня 2015, 17:56 | Сообщение # 1
частый гость
Сейчас нет на сайте
Привет, сижу мучаюсь и не могу придумать как можно реализовать комбо в 2д файтинге... Например "вверх, вниз, удар рукой, удар ногой" и получается какой-нибудь супер приём. Может кто подсказать? C:
Была мысль при нажатии на кнопку, переменная, назначенная к этой кнопке, будет менять значение с "false" на "true" и постоянно проходящая проверка при нахождении определённой... Комбинации будет запускать анимацию супер удара. Надеюсь то, что я написал достаточно понятно:)
Но возникает проблема, что не обязательно всё нажимать по порядку и например комбинация "вверх, вниз, удар рукой, удар ногой" может сработать, если игрок тыкнет на клавиши "удар рукой, удар ногой, вверх, вниз"


Сообщение отредактировал Rikstone26 - Вторник, 30 Июня 2015, 17:57
JudaSДата: Вторник, 30 Июня 2015, 18:02 | Сообщение # 2
частый гость
Сейчас нет на сайте
Ограничить кнопку по таймингу. Давать игроку немного времени на нажатие след кнопки.
К примеру:
Игрок нажал вверх - дается 1.5 секунды на нажатие вниз. Если игрок не успел или нажал не ту кнопку - комба прерывается..


Мои игры.
Twitter - @JudasGames
Rikstone26Дата: Вторник, 30 Июня 2015, 18:09 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата JudaS ()
Ограничить кнопку по таймингу. Давать игроку немного времени на нажатие след кнопки.
К примеру:
Игрок нажал вверх - дается 1.5 секунды на нажатие вниз. Если игрок не успел или нажал не ту кнопку - комба прерывается..

Дык это-то понятно, но не решается другая проблема, мне нужно, чтобы игрок нажал на кнопки именно в той последовательности, в которой я хочу, а так получается, что он может активировать комбо, нажав на кнопки из него в любом порядке
ЛеонидДата: Вторник, 30 Июня 2015, 18:26 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Я бы сделал так. Создал string, который хранит значение "комбо", при нажатии на каждую клавишу к этой переменной добавляется определенный символ (для каждой клавиши свой), проверяется, соответствует ли эта переменная какому-либо комбо, и периодически она очищается, если игрок бездействует (или если комбо достигло максимальной длины).
JhonДата: Вторник, 30 Июня 2015, 18:34 | Сообщение # 5
частый гость
Сейчас нет на сайте
По сути это задача поиска подпоследовательности объектов в другой последовательности. Решается с помощью конечных автоматов.
Леонид дал хороший вариант. Думаю, на конструкторе его будет проще реализовать, чем автомат. Хотя его решение автоматом вроде бы и является.
JudaSДата: Вторник, 30 Июня 2015, 18:35 | Сообщение # 6
частый гость
Сейчас нет на сайте
Rikstone26, Ты в файтинги играл?
У каждой комбинации есть кнопка старта. Это значит что он не может провернуть этот удар, начиная с другой кнопки.
Кэт-дэш из Injustice делается [Назад, Вперед, Атака2] --
Назад - Программа обозначила, что нажата кнопка "Назад" и прикидывает список комб, которые начинаются с назад.(X=1)
Вперед( в течении 1сек) - X+1=2
Атака2 (в течении 1 сек)- Означает, что комбо закончено, идет подсчет результата и вывод (Х+1=3)
X=3 - Идет анимация удара и обнуление переменной.

Разные комбинации, разный Х, разный результат. !Программа не должна прибавлять, если игрок нажал не во время или другую кнопку


Мои игры.
Twitter - @JudasGames
Rikstone26Дата: Вторник, 30 Июня 2015, 18:36 | Сообщение # 7
частый гость
Сейчас нет на сайте
Цитата Леонид ()
Я бы сделал так. Создал string, который хранит значение "комбо", при нажатии на каждую клавишу к этой переменной добавляется определенный символ (для каждой клавиши свой), проверяется, соответствует ли эта переменная какому-либо комбо, и периодически она очищается, если игрок бездействует (или если комбо достигло максимальной длины).

во это уже, что-то:)
Вот только так как я новичок, как в gml так и в программировании в целом, я не знаю как добавлять к переменной символ... Не подскажешь? Я так понимаю создаём переменную string(например)
Код
if keyboard_check(ord("E")) {string+=*нужный символ*}

Нигде не ошибся?:)
ЛеонидДата: Вторник, 30 Июня 2015, 21:24 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Цитата Rikstone26 ()
Нигде не ошибся?:)

Не стал бы я называть переменную string, это все-таки тип. Но суть та, правильно. Не забудь, что символ ставится в кавычках, сравнение как и с обычными переменными происходит.
П.С. Если ты новичок, то не советую сразу браться за файтинги. По моему опыту (хоть и не слишком большому) это чуть ли не самый сложный жанр в 2д.

Добавлено (30 июня 2015, 21:24)
---------------------------------------------

Цитата JudaS ()
У каждой комбинации есть кнопка старта. Это значит что он не может провернуть этот удар, начиная с другой кнопки.
Кэт-дэш из Injustice делается [Назад, Вперед, Атака2] --
Назад - Программа обозначила, что нажата кнопка "Назад" и прикидывает список комб, которые начинаются с назад.(X=1)
Вперед( в течении 1сек) - X+1=2
Атака2 (в течении 1 сек)- Означает, что комбо закончено, идет подсчет результата и вывод (Х+1=3)
X=3 - Идет анимация удара и обнуление переменной.

Разные комбинации, разный Х, разный результат. !Программа не должна прибавлять, если игрок нажал не во время или другую кнопку

Ты предлагаешь сделать подсчет некой переменной, для создания комбо? По-моему это слишком сложно, если только для каждого движения создавать свою переменную (твоим методом, как я понял, иначе разные последовательности дают один результат), в чем нет необходимости.
JudaSДата: Вторник, 30 Июня 2015, 21:48 | Сообщение # 9
частый гость
Сейчас нет на сайте
Цитата Леонид ()
Ты предлагаешь сделать подсчет некой переменной, для создания комбо? По-моему это слишком сложно, если только для каждого движения создавать свою переменную (твоим методом, как я понял, иначе разные последовательности дают один результат), в чем нет необходимости.


Я на скорую руку привел самый примитивный пример, который мог придумать. Поддерживаю вариант со string


Мои игры.
Twitter - @JudasGames
GC-VicДата: Вторник, 30 Июня 2015, 22:26 | Сообщение # 10
GcUp.ru
Сейчас нет на сайте
Вот примеров вариантов кода комбо полно тут. Также тут есть пример кода.

Закон Мерфи: "Если вы уверены, что ваш поступок встретит всеобщее одобрение, кому-то он обязательно не понравится".
minepecraftДата: Четверг, 02 Июля 2015, 19:33 | Сообщение # 11
участник
Сейчас нет на сайте
Не знаю,лично как по мне можно использовать переменные,не самый удобный вариант,ну что уж...
Логика такая:если нажата кнопка вниз,то переменная combo равна 1,создается alarm и в нем сбрасываем комбо до 0,далее:
если переменная комбо равна 1 и нажат пробел(еще можно приписать проверку спрайта и кадра,для точности)то делаем особый прыжок,если нажат пробел и переменная комбо равна 0,то делаем обычный прыжок.Проблема в том,что легко запутаться,по этому идея со стрингом тоже хороша,но не лучшая идея)

Добавлено (02 июля 2015, 19:33)
---------------------------------------------
Были раньше книги,которые при каждом раскладе событий меняли страницы)Вот и думай)))


Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Комбо в файтинге (gml)
  • Страница 1 из 1
  • 1
Поиск:

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