GML - не проходя через часть кода - PullRequest
0 голосов
/ 11 ноября 2018

Это код деформации запуска:

if (needEnter) {
    if (keyboard_check(vk_enter)) {
        audio_play_sound(door_open,0,0);
        room_goto(targetRoom);
        obj_player.x = targetX;
        obj_player.y = targetY;
        obj_player.image_index = playerSide
    } 
    else { 
        if (!instance_exists(obj_msgballoon)) {
            balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon);
            balloon.balloon_msg = msg_openable_door;
        }
        playerIsIn = true
    }
}
else {
    room_goto(targetRoom);
    obj_player.x = targetX;
    obj_player.y = targetY;
}

Приведенный выше код обычно вызывает появление экземпляра obj_msgballoon ... но что-то вроде этого не так:

if (keyboard_check(vk_enter)) {
    if instance_exists(obj_msgballoon) {
        if (obj_msgballoon.image_yscale > 1) {
            if cooldown < 1 {
                instance_destroy(obj_msgballoon)    
                balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon)
                balloon.isTimed = true;
                balloon.balloon_msg = msg_locked_door;
                cooldown = 15;
            }
        }
        cooldown--;
    } 
    else {
     balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon)  
     balloon.isTimed = true;
     balloon.balloon_msg = msg_locked_door;
    }
    if (!audio_is_playing(locked_door_snd)) {
        audio_play_sound(locked_door_snd,0,0);
    }
} 

Даже если я делаю что-то подобное, это не работает:

balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon);
balloon.balloon_msg = msg_openable_door;

Я просто не могу выяснить проблему ... может, я что-то упустил?

Редактировать: вот код obj_msgballoon;

STEP:

if (p) {
    sprite_index = ballon_msg;  
    p = false;
}

if (!isTimed) {
    if image_yscale < 1 {
     image_yscale += 0.3
    }
    x = obj_player.x
    y = obj_player.bbox_top - 15
} else {
    if image_yscale < 1 {
     image_yscale += 0.3
    }
    x = obj_player.x
    y = obj_player.bbox_top - 15
    if cooldown < 1 {
        instance_destroy();
    }
    cooldown--;
}

СОЗДАТЬ:

image_yscale = 0
p = true;
cooldown = 40;
isTimed = false;
balloon_msg = pointer_null;
...