Página 1 de 1
Passar de room
Enviado: Qua Dez 20, 2023 7:32 pm
por Nat_2005
Tem algo muito simples que não está dando certo no meu código, eu não consigo passar de room.
Eu tenho esse código:
obj_player > creat
Código: Selecionar todos
ori_scr = 0
scr = 99999999;
clickValue = 1;
upgradeCost = 150;
ganhou = false
obj_player > step
Código: Selecionar todos
// Verifica se a pontuação é atingida
if (scr >= 100000000) {
ganhou = true;
}
if (ganhou == true) {
room_goto(rm_02);
}
if (keyboard_check_pressed(vk_space)){
scr+=clickValue;
}
obj_player > draw_GUI
Código: Selecionar todos
draw_text(64, 64, string(obj_player.ganhou))
draw_text(64, 128, string(room))
Usando o draw_GUI, percebi que minha variável
ganhou não se torna
true quando o player atingi a pontuação máxima, logo ele chega as condições necessárias para passar de room.
Meu player atingi a pontuação máxima, mas o ganhou não se torna true, logo ele não passar de room.
Alguém tem algum palpite do que poderia ser?
Re: Passar de room
Enviado: Qui Dez 21, 2023 12:59 pm
por All-x
A lógica desse código está ok. É só criar um projeto em branco e testar que funciona certinho só com isso que postou.
Logo o erro não está nestes códigos aí.
Hipóteses:
1 - O player é persistente logo quando chega na pontuação ela não é resetada quando troca de room, pois o player não é recriado. Criando um loop eterno, dai seria só desmarcar a opção persistente do player.
2 - Alguma das variáveis já existe globalmente, ou seja foi criada usando globalvar. Dai seria só questão de trocar o nome das variáveis (principalmente a var 'ganhou').
3 - Outro código está impedindo de chegar nesse trecho que postou, dai só tendo código completo pra saber.
Re: Passar de room
Enviado: Qui Dez 21, 2023 4:30 pm
por Nat_2005
Tive que fazer muita coisa para descobrir o problema, desconfio que era meu obj_score que estava dando esse bug, não tenho certeza. Mas ainda tem algo estranho acontecendo. Eu criei uma variável
global no lugar da variável
ganhou, e essa varável tbm não fica
true nunca. Veja o código:
obj_player > creat:
Código: Selecionar todos
ori_scr = 0
scr = 99999999;
clickValue = 1;
global.congrt = false;
obj_player > step:
Código: Selecionar todos
if (scr >= 100000000) {
global.congrt = true;
}
if (global.congrt == true) {
room_goto(Room3);
//sim, eu mudei a room para saber se o problema era a room rm_02 que estava com problema.
}
if (keyboard_check_pressed(vk_space)){
scr+=clickValue;
}
obj_player > draw:
Código: Selecionar todos
if global.congrt == false{
draw_text(64, 64, "false");
}
else{
draw_text(64, 64, "true");
}
draw_text(64, 128, string(room))
Apesar do player mudar de room normalmente, o
global.congrt não fica
true.
Eu tirei tudo do meu jogo, tirei todos os objetos da sala e até apeguei alguns, mas esse bug continua. Será que o poblema é a IDE? Meu Game Maker Studio 2 está na última atualização.
Re: Passar de room
Enviado: Qui Dez 21, 2023 5:09 pm
por All-x
Ué, mas você reinicia ela pra false no Create 🫠
1 - Ela troca pra true no Step ;
2 - Vai pra próxima room;
3 - O Create do player é executado de novo e volta pra false (é uma fração de segundo 1/60, não tem como ver no draw).
Se você quer que uma variável só inicialize uma vez, use o evento Game Start ao invés do Create. Desde que seja uma variável global ela vai continuar acessível depois.