Привет.
Сегодня вкратце рассмотрим, как сделать прокручивающийся текст в Gamemaker.
Представленный способ и его реализация не единственно верные, но свои цели выполняет.
Видео с демонстрацией работы и объяснениями. Текст тот же самый, поэтому кому как удобнее - выбирайте.
Для реализации данной игровой механики придётся задействовать "Холсты" и использовать один единственный объект: тот, на котором должен выводиться данный текст.
Общий алгоритм прост: на вход мы получаем массив из строк, его преобразуем в одну большую строку.
Высчитав общую высоту этой строки, с учётом возможных переносов, создаём холст, шириной со спрайт исходного объекта и высотой нашей строки. Затем наносим на него весь указанный текст.
Ниже представлен код события "Create".
Таким образом получив один большой холст, необходимо сделать отрисовку лишь той части этого холста, что равняется высоте спрайта, за исключением обводки.
Для этого нам нужно использовать координату Y относительно этого холста, где ноль - верх, чем больше - тем ниже смещается рисующаяся часть холста.
При указании высоты холста я вычитаю четыре пикселя из высоты спрайта. Эти четыре пикселя складываются из двух пикселей обводки сверху и снизу.
Соответственно, если ваш спрайт имеет обводку более тонкую или более широкую - складываете количество пикселей обводки.
Тоже самое касается и отрисовки холста - прибавление двух пикселей нужно, чтобы отрисовка происходила внутри обводки, а не по ней.
Ниже представлен код события Draw GUI. Событие Draw должно быть пустым.
Остаётся сделать только непосредственно прокрутку текста.
Прокрутка текста реализована изменением переменной yy, значение которой должно держаться в промежутке от 0 до (высота текста - высота спрайта), чтобы игрок не мог прокручивать бесконечно вверх или вниз, максимум - мог увидеть самую нижнюю строку текста полностью. Происходит это в событии "Step" соответственно.
И небольшая иллюстрация того, как это всё дело просчитывается.
Этот код можно доработать при необходимости под ваши нужды, в том числе добавить различных удобств, вроде скроллбара.