Game Maker - создание игр | HellRoom Games
Март 24, 2025, 03:37:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Управление на Android  (Прочитано 7259 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Christopher
mgflernGD
GM Pro user
*

Репутация: 99
Offline Offline

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]500 сообщений!За постоянность! [10 дней на форуме]
API: Game Maker 7.0 Pro
Деятельность: Инди-разработчик
Сообщений: 713


DragonGameStudios


WWW
« : Август 18, 2016, 16:44:40 »

Более вменяемого названия темы в голову не пришло, к тому же я не уверен, куда пихать нужно это чудо, в статьи или в примеры.

Итак, когда у меня затронулась тема о управлении на сенсорных устройствах, я сразу задумался, как реализовать те или иные вещи.
Немного помучавшись, не нашел ничего дельного насчет свайпов по экрану, кроме библиотеки какого-то индуса на сайте YoYo, но я даже не стал вникать и решил сделать эту систему сам.
Так же, описал здесь некоторые возможности в GMS по кнопкам на экране и прочему.

На самом деле я думал, что будет довольно сложно придумать что да как, но оказалось, что все просто, хотя, возможно, как всегда не оптимизировано. Так же, возможно, эта тема уже затрагивалась, если да - прошу прощения

Клавиатурный эквивалент хардовых кнопок устройства:

Управление этими кнопками можно использовать как нажатие обычных клавиш на клавиатуре, добавляя в Событиях все, что связано с клавиатурой.


Так же предлагаю ознакомиться с простым однообьектным джойстиком, который можно применять как SixAxis или стики на Dualshock контроллерах.
На самом деле это частая практика в мобильных играх, но мне регулярно попадались большие, загроможденные обьекты, сложные примеры и труднопонимаемые индуссо-китайские коды.
Разбираем по полочкам:

Вроде бы просто и работает.
Надеюсь, статья для вас хоть мало-мальски полезной оказалась...

(Прим. возможно дополню статью дополнительными плюшками насчет управления на сенсорниках)
Записан
Fur
Абы-какой
GM Pro user
*

Репутация: 463
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]Третье место на HellRoom Jam #9 [Flucoldache]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673


Лисяток тебе.


« Ответ #1 : Август 18, 2016, 16:58:58 »

Кучи объектов, совершенно не правильная реализация стика. (Однако хотя бы не встроенными виртуальными кнопками). Свайпы вообще какая-то жуть.
Ты б сам для начала прочитал, как это правильно делается. Можешь начать с события Draw GUI и функций mouse_*.

Алсо, теме не место в статьях, ничему хорошему она не научит.
Записан

В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях.

Hyperflex
Christopher
mgflernGD
GM Pro user
*

Репутация: 99
Offline Offline

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]500 сообщений!За постоянность! [10 дней на форуме]
API: Game Maker 7.0 Pro
Деятельность: Инди-разработчик
Сообщений: 713


DragonGameStudios


WWW
« Ответ #2 : Август 18, 2016, 17:25:42 »

Свайпы вообще какая-то жуть.
Ты б сам для начала прочитал, как это правильно делается. Можешь начать с события Draw GUI и функций mouse_*.
свайпы - костыль, который накидал за пару минут, с лучшей альтернативой не заморачивался даже, предложи, как это делается - отредактирую тему и пущу в шапку на замену своим тупостям   
про функции и Draw GUI прекрасно знаю, принцип от того, где используется вообще не поменяется, на самом деле
Записан
Fur
Абы-какой
GM Pro user
*

Репутация: 463
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]Третье место на HellRoom Jam #9 [Flucoldache]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673


Лисяток тебе.


« Ответ #3 : Август 18, 2016, 17:39:44 »

про функции и Draw GUI прекрасно знаю, принцип от того, где используется вообще не поменяется, на самом деле
ГУИ очень сильно облегчает жизнь. Если в игре есть камера и движущиеся виды, то полетит твоя система к чертям. .-.
Записан

В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях.

Hyperflex
Neo
*LisenokArtist
GM Pro user
*

Репутация: 280
Offline Offline

Пол: Женский
Награды:
За медальки для форума!500 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Free
Сообщений: 971



« Ответ #4 : Август 19, 2016, 02:05:34 »

Достаточно бесполезная тема, если её не дорабатывать только по той причине, что примеры реализаций управления для сенсорных экранов поставляются вместе с самим ГМСом (вернее есть в списке примеров, но нужно докачать), где, помимо наличия исходного кода, дается описание по примеру и используемых функциях для достижения задуманной цели и наличие возможности проверить это на практике. Ну а тут я вижу какой-то костыль и достаточно глупую реализацию объектами. Конечно, это не есть плохо, но так делать крайне не рекомендуется. Бывают такие случаи, что по чистой глупости кто-то забывает добавить в ход соответствующий экземпляр объекта, который работает только в паре с другим, после чего некоторые такие личности бегут на форумы со своей проблемой.

Так же предлагаю ознакомиться с простым однообьектным джойстиком, который можно применять как SixAxis или стики на Dualshock контроллерах.
О реализации аналогового контроллера на форуме было не 1 и 2 примера(О, да! Оно же есть еще и в том списке примеров ГМС. Совпадение? Возможно.). Нет никакого смысла дублировать. Да, я имею ввиду дублировать, а не просто дублировать.

про функции и Draw GUI прекрасно знаю, принцип от того, где используется вообще не поменяется, на самом деле
ГУИ очень сильно облегчает жизнь. Если в игре есть камера и движущиеся виды, то полетит твоя система к чертям. .-.
Всегда делал привязку view_ функциями, выполняя отдельно от всего в соответствующем объекте, предназначенный для манипуляции видами, но DrawGUI все еще считаю несколько бесполезным.

Однако хотя бы не встроенными виртуальными кнопками
А что с этим не так?
Записан

Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #5 : Август 19, 2016, 10:49:48 »

Всегда делал привязку view_ функциями, выполняя отдельно от всего в соответствующем объекте, предназначенный для манипуляции видами, но DrawGUI все еще считаю несколько бесполезным.
То есть постоянно пересчитывать координаты и масштаб всех элементов GUI (как для отрисовки, так и для событий нажатия) более полезно, чем не делать этого?  errm
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
NickLatkovich
Никита Латкович
GM Pro user
*

Репутация: 185
Offline Offline

Пол: Мужской
Награды:
500 сообщений!За постоянность! [10 дней на форуме]За лояльность! [+150 репутации]3 место в Весеннем конкурсе. Игра
API: GameMaker Studio Master
Сообщений: 853


7*3=21;73=p(21);37=p(12)


WWW
« Ответ #6 : Август 19, 2016, 11:14:31 »

DrawGUI все еще считаю несколько бесполезным.
А если надо нарисовать GUI в 3D игре, например FPS. Тоже будешь считать DrawGUI бесполезным? Мало того, что для отрисовки интерфейса нужно будет выделять целый объект, с самой низкой глубиной (в то время как игрок должен быть, наоборот, с самой высокой глубиной) так ещё и дополнительную проекцию нужно будет установить, а это дополнительные как минимум три строчки (включить ортогональность, выключить удаление скрытых сюрфейсов и включить её после отрисовки ГИПа). Подведём итог:

Отрисовка GUI без помощи DrawGUI
Код:
1) Создать новый объект.
2) Установить ему низкую глубину.
3) Создать событие Draw.
4) Включить ортогональную проекцию.
5) Выключить удаление скрытых сюрфейсов.
6) Нарисовать GUI.
7) Включить удаление скрытых сюрфейсов.
0) Включить 3D проекцию снова.

Отрисовка GUI с помощью DrawGUI.
Код:
1) Создать событие DrawGUI.
2) Нарисовать в нём GUI.
0) Включить 3D проекцию снова ЕСЛИ она поменялась.

И что мы имеем? Ах да, мы создаём дополнительный объект, который должен работать в связке с игроком (или камерой). А как ты сам говорил:
Бывают такие случаи, что по чистой глупости кто-то забывает добавить в ход соответствующий экземпляр объекта, который работает только в паре с другим, после чего некоторые такие личности бегут на форумы со своей проблемой.



Ты всё ещё считаешь DrawGUI бесполезным?
Записан

luden
GM Pro user
*

Репутация: 151
Offline Offline

Награды:
500 сообщений!За постоянность! [200 дней на форуме]
API: GameMaker Studio Master
Сообщений: 704


« Ответ #7 : Август 19, 2016, 11:15:16 »

Всегда делал привязку view_ функциями, выполняя отдельно от всего в соответствующем объекте, предназначенный для манипуляции видами, но DrawGUI все еще считаю несколько бесполезным.
Рекомендую следующую задачу. Вид сверху, самолётик управляемый виртуальным стиком, вид жёстко привязан к самолётику таким образом, что поворачивается вместе с самолётиком и всегда держит самолётик в фиксированной точке внизу экрана, открывая обзор на впереди лежащие территории.
Попытки спроектировать такую вещь через преобразования координат вида вынудили меня проникнуться бесконечным уважением к device_mouse_* функциям и DrawGUI.
Записан
NickLatkovich
Никита Латкович
GM Pro user
*

Репутация: 185
Offline Offline

Пол: Мужской
Награды:
500 сообщений!За постоянность! [10 дней на форуме]За лояльность! [+150 репутации]3 место в Весеннем конкурсе. Игра
API: GameMaker Studio Master
Сообщений: 853


7*3=21;73=p(21);37=p(12)


WWW
« Ответ #8 : Август 19, 2016, 11:21:36 »

вид жёстко привязан к самолётику таким образом, что поворачивается вместе с самолётиком и всегда держит самолётик в фиксированной точке внизу экрана, открывая обзор на впереди лежащие территории.
Кстати да, отличный пример)
Записан

Neo
*LisenokArtist
GM Pro user
*

Репутация: 280
Offline Offline

Пол: Женский
Награды:
За медальки для форума!500 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Free
Сообщений: 971



« Ответ #9 : Август 19, 2016, 12:19:27 »

Всегда делал привязку view_ функциями, выполняя отдельно от всего в соответствующем объекте, предназначенный для манипуляции видами, но DrawGUI все еще считаю несколько бесполезным.
То есть постоянно пересчитывать координаты и масштаб всех элементов GUI (как для отрисовки, так и для событий нажатия) более полезно, чем не делать этого?  errm
Перечитал по событию и вроде работает так же, как и
Код:
d3d_set_projection_ortho()
для случая с 3D, но как насчет динамического интерфейса, к примеру, существует какой-то противник и рядом с ним рисуется короткая сводка по статистикам?

DrawGUI все еще считаю несколько бесполезным.
А если надо нарисовать GUI в 3D игре, например FPS.
Уже практиковал с такой динамической камерой и элементы интерфейса оставались статичными.

И что мы имеем? Ах да, мы создаём дополнительный объект, который должен работать в связке с игроком (или камерой). А как ты сам говорил:
Бывают такие случаи, что по чистой глупости кто-то забывает добавить в ход соответствующий экземпляр объекта, который работает только в паре с другим, после чего некоторые такие личности бегут на форумы со своей проблемой.
Немного не ту мысль уловил. Под своим сообщением я имею ввиду, что было бы неплохо использовать
Код:
point_distance()
,чем
Код:
distance_to_object()
,что позволит сфокусироваться на одном экземпляре объекта, чем использовать пару.
Записан

Fur
Абы-какой
GM Pro user
*

Репутация: 463
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]Третье место на HellRoom Jam #9 [Flucoldache]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673


Лисяток тебе.


« Ответ #10 : Август 19, 2016, 13:01:27 »

Однако хотя бы не встроенными виртуальными кнопками
А что с этим не так?
Я знаю, что при следующем обновлении мои кнопки не отвалятся и могу кастомизировать их как хочу. Как только тебе понадобится какая-нибудь нестандартная кнопка - встроенные станут бесполезны.
Да и помню пару случаев, что у кого-то они действительно ломались.
Записан

В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях.

Hyperflex
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.122 секунд. Запросов: 31.