Как исправить ошибку с 'image_xscale' в GameMaker Studio 2? - PullRequest
1 голос
/ 09 апреля 2019

Я делаю игру в GameMaker Studio 2, и у меня проблема. Когда объект поворачивается влево или вправо, он рванулся вперед. Но он должен быть в том же положении, что и в первый раз.

Я пытался использовать этот код:

/// @description vaksciojimas
// You can write your code in this editor

key_right = keyboard_check(vk_right);
key_left = keyboard_check(vk_left);
key_jump = keyboard_check_pressed(vk_space);

var move = key_right - key_left;

hsp = move * walksp;

vsp = vsp + grv;

if (place_meeting(x,y+1,obj_wall)) && (key_jump) {
    vsp = -8;
}

//horizontaliai susiduria
if (place_meeting(x+hsp,y,obj_wall)) {
    while (!place_meeting(x+sign(hsp),y,obj_wall)) {
        x = x + sign(hsp);
    }
    hsp = 0;
}

x = x + hsp;

//vertikaliai susiduria
if (place_meeting(x,y+vsp,obj_wall)) {
    while (!place_meeting(x,y+sign(vsp),obj_wall)) {
        y = y + sign(vsp);
    }
    vsp = 0;
}

y = y + vsp;
//animacijos
if (!place_meeting(x,y+1,obj_wall)) {
    sprite_index = sprite_jumping_player;
    image_speed = 0;
    if (sign(vsp) > 0){
        image_index = 1;
    }
    else {
        image_index = 0;
    }
}
else {
    image_speed = 1;
    if (hsp == 0) {
        sprite_index = sprite_player;
    }
    else {
        sprite_index = sprite_runing_player;
    }
}
if (hsp != 0) { // hsp = horizontal speed
    image_xscale = sign(hsp);
}

Когда я делал это, я смотрел этот урок: https://www.youtube.com/watch?v=fCeyiEcWRAs&t=8s

1 Ответ

1 голос
/ 11 апреля 2019

Судя по всему, это связано с происхождением спрайта.

Исходя, вы решаете, где находится центр спрайта. В какой момент он должен вращаться / поворачиваться вокруг т. Д.

Вам необходимо установить источник в самом спрайте (не в редакторе спрайтов, а только в изображении спрайта), потому что по умолчанию он установлен в верхнем левом углу. Установка его по центру - обычный метод. Начальная точка отображается в виде символа «+».

...