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

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Реализация анимированного меню  (Прочитано 3565 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ярик
Активный участник
*****

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

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



« : Декабрь 06, 2021, 12:43:13 »

Как лучше всего реализовывать анимации меню?
Допустим при нажатии на кнопку "настройки", все кнопки начинают куда-нибудь сдвигаться, начинает что-нибудь появляться. И всё это происходит в одной комнате.

Пытался реализовывать на подобии такой фигни:
Код:
if AnimationRoom = true
{
    with (кнопка)
    {
        x -= 1
    }
}

Но получается тонна кода и много различных проблем с хрупкостью конструкции.
Записан

А че как 2 числа сравнить то это быстрее?
Вот так >? Вот так < ? Или лучше вот так sign(0)
Лер да Рим
On standby...
GM Pro user
*

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

Пол: Мужской
Награды:
500 сообщений!За постоянность! [50 дней на форуме]
API: Game Maker 8.0 Pro
Сообщений: 896


фрр-фрррр


« Ответ #1 : Декабрь 06, 2021, 12:59:22 »

если (кнопка) = объект, а не экземпляр объекта, то with обработает все кнопки в комнате. Поэтому и сдвигаются все.

Добавлено: Декабрь 06, 2021, 13:01:58
А, не так понял код. Ну тогда в целом твой вариант рабочий, что не так-то. В плане... в чём хрупкость заключается?
Записан

Всё гениальное просто.
ярик
Активный участник
*****

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

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



« Ответ #2 : Декабрь 06, 2021, 16:26:31 »

Цитировать
в чём хрупкость заключается?
Ну.... Ладно, хрупкость кода, зависит от твоих рук.

Но давай-те перейдем к другой проблеме, это сам размер кода для анимирования.
К примеру вот скрипт для эффекта "передвижения кнопки за пределы экрана"

Уточнять что делает код я не буду, но размер понятен.

И.... Есть проще способы для создания анимации комнаты?

Записан

А че как 2 числа сравнить то это быстрее?
Вот так >? Вот так < ? Или лучше вот так sign(0)
PGames
GM Pro user
*

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

Пол: Мужской
Награды:
500 сообщений!За постоянность! [10 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #3, Каменный векЗа участие в Весеннем конкурсе.
API: GameMaker Studio 2
Деятельность: да
Сообщений: 766



« Ответ #3 : Декабрь 06, 2021, 23:26:43 »

Цитировать
в чём хрупкость заключается?
Ну.... Ладно, хрупкость кода, зависит от твоих рук.

Но давай-те перейдем к другой проблеме, это сам размер кода для анимирования.
К примеру вот скрипт для эффекта "передвижения кнопки за пределы экрана"

Уточнять что делает код я не буду, но размер понятен.

И.... Есть проще способы для создания анимации комнаты?

Ярик, это сейчас выглядит ужасно. Ты можешь ведь объединить условия типа(ужасно не только из-за этого)
Код:
if( a == b && b == c)
&& или and
Записан
ярик
Активный участник
*****

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

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



« Ответ #4 : Декабрь 07, 2021, 00:24:54 »

Я этот скрипт писал лет миллион назад.

Цитировать
Ты можешь ведь объединить условия
Хочу огорчить, но конструкция такого вида:
Код:
if Variable != 1
{
    if Variable != 4
    {
        show_message("Переменная равна не 1 и не 4")
    }else{
        show_message("4");
    }   
}else{
    show_message("1");
}

Не равна конструкции такого вида:
Код:
if (Variable != 1 or Variable != 4)
{

}else{
    show_message("1? Или даже 4?")
}

Цитировать
Ярик, это сейчас выглядит ужасно.
Код уродский. Я этого не отрицаю.

---------------------------------------------------
Sequences нашёл не давно в Гмс2.3
Можно ли с помощью него создавать анимации кнопок для комнаты? Или он не подходит для него? (Или он подходит, но предыдущий способ лучше?)
Записан

А че как 2 числа сравнить то это быстрее?
Вот так >? Вот так < ? Или лучше вот так sign(0)
SilentPhil
Norland
GM Pro user
*

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

Пол: Мужской
Награды:
Первое место на HellRoom Jam #7 [Hell in Your Fridge]500 сообщений!За постоянность! [50 дней на форуме]За лояльность! [+150 репутации]Настоящий игродел!Второе место на HellRoom Jam #6 [По следам Артакса]...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363



WWW
« Ответ #5 : Декабрь 07, 2021, 09:38:51 »

но предыдущий способ лучше?)

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

Наиболее простой способ - использовать готовые "движки" для передвижения всякого.
https://marketplace.yoyogames.com/search/results?utf8=?&query=tween
Я в нескольких коммерческих проектах использовал Tweenline - вполне себе удобно. Он, правда, платный, но по ссылке есть и бесплатные аналоги.

Конкретно Tweenline позволял делать нечто подобное:
tween_to(obj_box, 5, ["x", x + 200, "y", y + 300, "image_angle", 90]);
Т.е. заставляем двигаться некий объект 5 секунд на 200 px вправо, на 300 вниз, да еще и одновременно с этим угол меняем на 90 градусов.
И это один из самых простых вариантов - там можно куда более сложные последовательности делать, в том числе и с задержкой.

К тому же в твины обычно встроены, так называемые, функции плавности (https://easings.net/ru), которые движения объектов делают плавными и красивыми. На линейном движении далеко не уедешь - оно выглядит уродливо.



Да, в гмс 2 появились секвенции. Там тоже можно настраивать функции плавности, прямо на таймлайне мышкой двигать объекты, все дела.
Но конечное использование не показалось мне очень удобным - объекты, которые используются в секвенциях - это не обычные объекты гмс, а специальные.
Не уверен, можно ли там настраивать события нажатий мыши, например. Но для катсцен подходит.
Я использую секвенции как эдакий spine на минималках. Потом просто экспортирую результат анимаций как curves и использую их в своем движке-аниматоре.
Записан

         
Да, на них можно кликать.
ярик
Активный участник
*****

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

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



« Ответ #6 : Декабрь 07, 2021, 10:38:09 »

Спасибо!
Записан

А че как 2 числа сравнить то это быстрее?
Вот так >? Вот так < ? Или лучше вот так sign(0)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

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