Obrigado por visitar a The Game Makers Brasil |
PROBLEMA COM MELEE ATTACK Tópico resolvido
- xxZ3USSSxx
- Novato
- Reações: 2
- Mensagens: 12
PROBLEMA COM MELEE ATTACK Tópico resolvido
Meio que toda vez que o obj_dano é criado ele se destroi rapidamente e nao da tempo dele colidir com o inimigo e causar dano nele, esse é o codigo que coloquei no estado de ataque:
case "ataque":
{
sprite_index= spr_player_atk;
if(image_index > 5){
if(!instance_exists(obj_dano)){
instance_create_layer(x + (25 * image_xscale),y - 12,"Instances",obj_dano);
}
}
if(instance_exists(obj_dano)){
instance_destroy(obj_dano);
}
if(image_index > image_number - 1){
estado= "parado";
}
hspd= 0;
break;
}
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: PROBLEMA COM MELEE ATTACK
A execução dos códigos são sempre em seções que vão de cima pra baixo, o problema aqui é que você verifica a existência de um obj_dano e caso não exista você o cria, mas literalmente o próximo código também verifica a existência de um obj_dano e como ele acabou de ser criado a verificação vai dar verdadeira e ele vai ser destruído no mesmo frame, caso fosse visível nem ia aparecer na tela.
Uma solução é definir um alarme para o obj_dano se autodestruir.
Você pode definir o alarme no create do obj_dano ou pelo
instance_create_layer
Código: Selecionar todos
instance_create_layer(x + (25 * image_xscale), y - 12,"Instances",obj_dano).alarm[0] = 10;
- xxZ3USSSxx
- Novato
- Reações: 2
- Mensagens: 12
Re: PROBLEMA COM MELEE ATTACK
bem eu coloquei o codio acima mas nao deu certo :( eu coloquei:ValdeciVieira escreveu: ↑Seg Mai 27, 2024 1:11 pm Ops não vi, só sou notificado quando gente nova tenta postar, vou ver se mudo isso.
A execução dos códigos são sempre em seções que vão de cima pra baixo, o problema aqui é que você verifica a existência de um obj_dano e caso não exista você o cria, mas literalmente o próximo código também verifica a existência de um obj_dano e como ele acabou de ser criado a verificação vai dar verdadeira e ele vai ser destruído no mesmo frame, caso fosse visível nem ia aparecer na tela.
Uma solução é definir um alarme para o obj_dano se autodestruir.
Você pode definir o alarme no create do obj_dano ou pelo
instance_create_layerCaso queira fazer, sei lá, um sistema de combos, dano variável, impacto e precise definir várias variáveis de uma vez, você pode usar o with.Código: Selecionar todos
instance_create_layer(x + (25 * image_xscale), y - 12,"Instances",obj_dano).alarm[0] = 10;
Código: Selecionar todos
if(image_index > 5){
if(!instance_exists(obj_dano)){
instance_create_layer(x + (25 * image_xscale),y - 12,"Instances",obj_dano).alarm[0]= 10;
}
}
acabei colocando o alarme ali no final mas nao deu certo eu coloquei o alarme tbm no create como
Código: Selecionar todos
alarm[0] = 0
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: PROBLEMA COM MELEE ATTACK
E se você já tem um código pro alarm[0] então adapte o código que eu enviei para o alarm[1].
Também ficou faltando definir o código de autodestruição no alarme do obj_dano, mas achei que você já conhecia a função instance_destroy
- xxZ3USSSxx
- Novato
- Reações: 2
- Mensagens: 12
Re: PROBLEMA COM MELEE ATTACK
Entao eu conheço sim o instance_destroy inclusive tentei utilizar ele em um codigo que eu tava testando para ver se ia funcionar mas nao funcionou(nenhuma surpresa pra mim kkkk) eu fiz o seguinte:ValdeciVieira escreveu: ↑Seg Mai 27, 2024 2:19 pm Se você já definiu o alarm com o instance_create_layer, não precisa definir do create do obj_dano, ainda mais com o valor 0.
E se você já tem um código pro alarm[0] então adapte o código que eu enviei para o alarm[1].
Também ficou faltando definir o código de autodestruição no alarme do obj_dano, mas achei que você já conhecia a função instance_destroy
Código: Selecionar todos
if(!alarm[1] = 0){
alarm[1]--;
instance_destroy(obj_dano);
}
Código: Selecionar todos
case "ataque":
{
sprite_index= spr_player_atk;
if(image_index > 5){
if(!instance_exists(obj_dano)){
instance_create_layer(x + (25 * image_xscale),y - 12,"Instances",obj_dano).alarm[1]= 10;
}
}
if(image_index > image_number - 1){
estado= "parado";
}
hspd= 0;
Código: Selecionar todos
if(alarm[0] > 0){
sprite_index= spr_player_hit;
}else{
estado= estado;
}
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: PROBLEMA COM MELEE ATTACK
Código: Selecionar todos
if(!alarm[1] = 0){
alarm[1]--;
instance_destroy(obj_dano);
}
https://www.youtube.com/watch?v=GrjlTcO ... 1lcw%3D%3D[/youtube]
- xxZ3USSSxx
- Novato
- Reações: 2
- Mensagens: 12
Re: PROBLEMA COM MELEE ATTACK
entao eu acabei de assistir o video ate que foi legal eu entendi um pouco como funciona o alarme, mas ainda sim nao consegui resolver tentei criar um alarme no obj_dano e fiz umas maracutaias com base no que vi no video mas nao deu certo :( eu tentei colocar o codigo de criaçao do obj_dano no alarme mas nao deu certo (acho que o problema sou eu nao é nem o programa kkkkk)se vc quiser oq eu fiz pode falar que eu mandoValdeciVieira escreveu: ↑Seg Mai 27, 2024 4:07 pmVocê tem que definir o alarme no obj_dano, não no player. E os alarmes não funcionam assim, quando você coloca um tempo neles eles ficam armados e começam a contar, quando o tempo acabar ele vai executar o código dentro dele.Código: Selecionar todos
if(!alarm[1] = 0){ alarm[1]--; instance_destroy(obj_dano); }
https://www.youtube.com/watch?v=GrjlTcO ... 1lcw%3D%3D[/youtube]
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: PROBLEMA COM MELEE ATTACK
Esse código aqui tá certo, agora você só precisa ir no obj_dano, adicionar o evento alarme1 e colocarxxZ3USSSxx escreveu: ↑Seg Mai 27, 2024 2:52 pmCódigo: Selecionar todos
case "ataque": { sprite_index= spr_player_atk; if(image_index > 5){ if(!instance_exists(obj_dano)){ instance_create_layer(x + (25 * image_xscale),y - 12,"Instances",obj_dano).alarm[1]= 10; } } if(image_index > image_number - 1){ estado= "parado"; } hspd= 0;
Código: Selecionar todos
instance_destroy();
- xxZ3USSSxx
- Novato
- Reações: 2
- Mensagens: 12
Re: PROBLEMA COM MELEE ATTACK
funcionou muito obrigado :) , e desculpa qualquer coisaValdeciVieira escreveu: ↑Qua Mai 29, 2024 2:07 pmEsse código aqui tá certo, agora você só precisa ir no obj_dano, adicionar o evento alarme1 e colocarxxZ3USSSxx escreveu: ↑Seg Mai 27, 2024 2:52 pmCódigo: Selecionar todos
case "ataque": { sprite_index= spr_player_atk; if(image_index > 5){ if(!instance_exists(obj_dano)){ instance_create_layer(x + (25 * image_xscale),y - 12,"Instances",obj_dano).alarm[1]= 10; } } if(image_index > image_number - 1){ estado= "parado"; } hspd= 0;
Código: Selecionar todos
instance_destroy();
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: PROBLEMA COM MELEE ATTACK
Depois de um tempo eu notei que não tava realmente aprendendo nada, apenas copiando os códigos que eram mostrados, tanto que se eu fosse precisar fazer a mesma coisa ia ser obrigado a voltar no vídeo pra copiar o código novamente.
Aí eu simplesmente sumi da internet (bom, a ausência de uma internet também ajudou) e resolvi aprender na marra simplesmente pensando no que eu queria fazer, o que seu sabia para fazer aquilo e percorrendo o manual do game maker para aprender o que não sabia.
Me impressiono até hoje com uma réplica funcional quase idêntica do castelo do barão no final fantasy 2/4
Quem está online
Usuários navegando neste fórum: Google [Bot] e 1 visitante