При использовании команды draw_sprite в Game Maker Studio 2 анимация работает с невероятно высокой скоростью.

При использовании кода draw_sprite в Game Maker Studio 2 gml анимация устанавливается на смехотворно быструю скорость. Событие розыгрыша выглядит следующим образом.

    var cx = camera_get_view_x(view_camera[1]);
    var cy = camera_get_view_y(view_camera[1]);
    var cw = camera_get_view_width(view_camera[1]);


    if (global.player_health >= 1)
    {
    draw_sprite(heartSmallSpr, -1, cx + (cw / 2) - 64, cy + 25)
    }

    if (global.player_health >= 2)
    {
    draw_sprite(heartSmallSpr, -1, cx + (cw / 2), cy + 25)
    } 

    if (global.player_health >= 3)
    {
    draw_sprite(heartSmallSpr, -1, cx + (cw / 2) + 64, cy + 25)
    }

Спрайт имеет два кадра, установленных на 1 секунду, но когда функция draw_sprite(); код установлен на -1 или sprite_index, он воспроизводит около 100 кадров в секунду. Я попытался установить скорость спрайта, но это ничего не делает.


person AnUnnamedPerson    schedule 20.10.2018    source источник
comment
не имеет отношения к вашей текущей проблеме, но делаете ли вы утверждение «если» для каждого бита здоровья? Если это всего 3 жизни, это не проблема, но если вы расширяете это, попробуйте вместо этого использовать цикл for.   -  person Steven    schedule 23.10.2018
comment
На данный момент я делаю только три жизни, но я мог бы рассмотреть зацикливание, если бы оно было более компактным, я определенно буду использовать его.   -  person AnUnnamedPerson    schedule 23.10.2018


Ответы (3)


А пока я просто сделаю простой таймер, который вычитает 1 из переменной каждый кадр, и когда он будет равен 0, я заставлю его изменить sprite_index. Это, вероятно, долгий путь, но я по-прежнему открыт для любых предложений по поводу приведенного выше кода.

person AnUnnamedPerson    schedule 24.10.2018
comment
Просто вопрос, но если вы хотите использовать только один кадр, то почему у спрайта все равно два кадра? это часть анимации, или вы хотите установить другой кадр только при выполнении определенного условия? Я думаю, что лучше сделать два отдельных спрайта для кадров, а затем изменить sprite_index на другой кадр, когда это необходимо. Хотя это действительно зависит от того, о чем второй кадр. - person Steven; 26.10.2018
comment
Я хочу использовать оба кадра в постоянной анимации независимо от условий. Я хочу, чтобы анимация всегда воспроизводилась, но я не могу из-за скорости, с которой команда воспроизводит анимацию. - person AnUnnamedPerson; 28.10.2018

Просто установите индекс спрайта на 0, «sprite_index» — это изображение, которое нужно отрисовать. я не знаю, почему он работает очень быстро, если вы установите его на -1, но поскольку нет индекса изображения -1, это должно дать вам ошибку. Просто установите его на то, что вы хотите, чтобы он рисовал. Если вы хотите, чтобы он воспроизводил анимацию, вы не можете использовать draw_sprite без настройки переменной для запуска всех индексов изображений.

person King Duck    schedule 19.12.2018

Если image_index показывает вам повышенную скорость анимации, это либо скорость вашей комнаты, либо где-то в вашей игре что-то вручную изменяет либо image_speed, либо image_index.

Может быть, проверить, не осталось ли у вас остатка какого-то другого кода, который вы использовали для изменения этих переменных?

person Fox    schedule 22.12.2018