Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

PROBLEMA COM MELEE ATTACK Tópico resolvido

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
xxZ3USSSxx
Novato
Novato
Reações: 2
Mensagens: 11

PROBLEMA COM MELEE ATTACK  Tópico resolvido

Mensagem por xxZ3USSSxx » Dom Mai 26, 2024 4:24 pm

Ola estou com um problema no melee attack, meio que eu sei qual é o problema mas nao sei resolver ;-;.
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;
}

Avatar do usuário
ValdeciVieira
Moderador
Moderador
Reações: 6
Mensagens: 120
Localização: Rio de Janeiro, Brasil

Re: PROBLEMA COM MELEE ATTACK

Mensagem por ValdeciVieira » 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_layer

Código: Selecionar todos

instance_create_layer(x + (25 * image_xscale), y - 12,"Instances",obj_dano).alarm[0] = 10;
Caso 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.

Avatar do usuário
xxZ3USSSxx
Novato
Novato
Reações: 2
Mensagens: 11

Re: PROBLEMA COM MELEE ATTACK

Mensagem por xxZ3USSSxx » Seg Mai 27, 2024 2:12 pm

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_layer

Código: Selecionar todos

instance_create_layer(x + (25 * image_xscale), y - 12,"Instances",obj_dano).alarm[0] = 10;
Caso 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.
bem eu coloquei o codio acima mas nao deu certo :( eu coloquei:

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
tbm nao funcionou, mas nao sei se nao funcionou porque ja coloquei um codigo utilizando o alarm[0] ou so nao deu certo mesmo porq nao coloquei nada no alarm[0], eu tentei criar um outro alarme e fazer igual so que com esse outro alarme mas tbm nao deu certo(eu nao coloquei nada no alarm[1]).

Avatar do usuário
ValdeciVieira
Moderador
Moderador
Reações: 6
Mensagens: 120
Localização: Rio de Janeiro, Brasil

Re: PROBLEMA COM MELEE ATTACK

Mensagem por ValdeciVieira » 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

Avatar do usuário
xxZ3USSSxx
Novato
Novato
Reações: 2
Mensagens: 11

Re: PROBLEMA COM MELEE ATTACK

Mensagem por xxZ3USSSxx » Seg Mai 27, 2024 2:52 pm

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
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:

Código: Selecionar todos

if(!alarm[1] = 0){
	alarm[1]--;
	instance_destroy(obj_dano);
}
eu tentei diminuir 1 do alarme mas nao funcionou, esqueci de falar algo aquele codigo que mostrei la no começo esta no estado de ataque que esta dentro de um switch:

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;
e o codigo que eu falei que ja esta utilizando um dos alarmes é esse:

Código: Selecionar todos

if(alarm[0] > 0){
		sprite_index= spr_player_hit;
}else{
		estado= estado;	
}
eu tbm tirei o alarm[1] do create!

Avatar do usuário
ValdeciVieira
Moderador
Moderador
Reações: 6
Mensagens: 120
Localização: Rio de Janeiro, Brasil

Re: PROBLEMA COM MELEE ATTACK

Mensagem por ValdeciVieira » Seg Mai 27, 2024 4:07 pm

Código: Selecionar todos

if(!alarm[1] = 0){
	alarm[1]--;
	instance_destroy(obj_dano);
}
Você 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.
https://www.youtube.com/watch?v=GrjlTcO ... 1lcw%3D%3D[/youtube]

Avatar do usuário
xxZ3USSSxx
Novato
Novato
Reações: 2
Mensagens: 11

Re: PROBLEMA COM MELEE ATTACK

Mensagem por xxZ3USSSxx » Qua Mai 29, 2024 1:11 pm

ValdeciVieira escreveu: Seg Mai 27, 2024 4:07 pm

Código: Selecionar todos

if(!alarm[1] = 0){
	alarm[1]--;
	instance_destroy(obj_dano);
}
Você 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.
https://www.youtube.com/watch?v=GrjlTcO ... 1lcw%3D%3D[/youtube]
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 mando 👍.

Avatar do usuário
ValdeciVieira
Moderador
Moderador
Reações: 6
Mensagens: 120
Localização: Rio de Janeiro, Brasil

Re: PROBLEMA COM MELEE ATTACK

Mensagem por ValdeciVieira » Qua Mai 29, 2024 2:07 pm

xxZ3USSSxx escreveu: Seg Mai 27, 2024 2:52 pm

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;
Esse código aqui tá certo, agora você só precisa ir no obj_dano, adicionar o evento alarme1 e colocar

Código: Selecionar todos

instance_destroy();

Avatar do usuário
xxZ3USSSxx
Novato
Novato
Reações: 2
Mensagens: 11

Re: PROBLEMA COM MELEE ATTACK

Mensagem por xxZ3USSSxx » Qua Mai 29, 2024 2:38 pm

ValdeciVieira escreveu: Qua Mai 29, 2024 2:07 pm
xxZ3USSSxx escreveu: Seg Mai 27, 2024 2:52 pm

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;
Esse código aqui tá certo, agora você só precisa ir no obj_dano, adicionar o evento alarme1 e colocar

Código: Selecionar todos

instance_destroy();
funcionou muito obrigado :) , e desculpa qualquer coisa 😅.Apesar de eu estar no game maker a mais de sei la 4 anos eu nao entendo muita coisa porque so começei a entender uma parte dos codigos ano passado kkkkk.
1 Imagem

Avatar do usuário
ValdeciVieira
Moderador
Moderador
Reações: 6
Mensagens: 120
Localização: Rio de Janeiro, Brasil

Re: PROBLEMA COM MELEE ATTACK

Mensagem por ValdeciVieira » Qua Mai 29, 2024 2:54 pm

Tudo bem, quando comecei e queria fazer as coisas que não sabia como, embora eu pudesse ter feitas inúmeras perguntas pra cada uma das minhas dúvidas, eu simplesmente dava uma olhada em algum tutorial no youtube (tutorial br ainda).
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 😄.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante