но предыдущий способ лучше?)
К сожалению, что угодно будет лучше, чем текущая реализация.
Ты правильно подметил про хрупкость кода - поддерживать это все в рабочем состоянии очень сложно.
Наиболее простой способ - использовать готовые "движки" для передвижения всякого.
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 и использую их в своем движке-аниматоре.