GML - не проходя через часть кода

Это код Trigger Warp:

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_msgballon)) {
            ballon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballon);
            ballon.ballon_msg = msg_openable_door;
        }
        playerIsIn = true
    }
}
else {
    room_goto(targetRoom);
    obj_player.x = targetX;
    obj_player.y = targetY;
}

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

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

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

ballon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballon);
ballon.ballon_msg = msg_openable_door;

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

Изменить: здесь это код obj_msgballon;

ШАГ:

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

if (!isTimmed) {
    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;
isTimmed = false;
ballon_msg = pointer_null;

0 ответов

Другие вопросы по тегам