Entrar
Últimos assuntos
» Alguém aqui já ganha dinheiro com seus games?por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
Atacando sem parar
5 participantes
Página 1 de 1
Atacando sem parar
Olá pessoal! Eu sou novo por aqui e não sou bom em GML e nem em Lógica, mas, to fazendo o impossível para aprender, então peço ajuda a todos. O jogo vai ser feito em TopDown e como na descrição diz, eu quero q o inimigo quando perto do player ataque de maneira pausada o meu código é esse:
no step do inimigo:
if (distance_to_object(ob_player)>15 and distance_to_object(ob_player)<150){
i_parado=false;
mp_potential_step(ob_player.x,ob_player.y,2,false);}
else{
i_parado=true;
speed=0;}
if (i_atacando=false and distance_to_object(ob_player)<=16){
image_index=0;
i_atacando=true;
alarm[0]=25}
no alarm0 do inimigo:
i_atacando=false;
como vocês podem ver eu uso um alarm mas, mesmo assim, quando o inimigo fica perto do player ele fica atacando sem parar, e só para quando o player se afasta dele.
no step do inimigo:
if (distance_to_object(ob_player)>15 and distance_to_object(ob_player)<150){
i_parado=false;
mp_potential_step(ob_player.x,ob_player.y,2,false);}
else{
i_parado=true;
speed=0;}
if (i_atacando=false and distance_to_object(ob_player)<=16){
image_index=0;
i_atacando=true;
alarm[0]=25}
no alarm0 do inimigo:
i_atacando=false;
como vocês podem ver eu uso um alarm mas, mesmo assim, quando o inimigo fica perto do player ele fica atacando sem parar, e só para quando o player se afasta dele.
jailson_dante- Data de inscrição : 10/11/2014
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Eu não sei como ta no seu jogo, mas nos meus eu uso mais ou menos isso, espero que te ajude.
No create
Na colisão dele com o player ou no ato de mudar a sprite para o ataque.
no alarm[0]
E finalmente no alarm[1]
No create
- Código:
paralisado = false
Na colisão dele com o player ou no ato de mudar a sprite para o ataque.
- Código:
if paralisado = false
{
sprite_index = //Sua sprite de ataque ou do hp no players diminuindo Ex.: obj_player.hp -=5
alarm[0] = 5
}
no alarm[0]
- Código:
paralisado = true;
alarm[1] = //Voce decide quando ele volta a atacar.
E finalmente no alarm[1]
- Código:
paralisado = false;
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Re: Atacando sem parar
Não sei se entendi bem, mas no Evento Alarm vc pôs outro
- Código:
alarm[0]=25
Última edição por Sewer Crawler em Qui 11 Dez 2014, 20:15, editado 1 vez(es)
Sewer Crawler- Data de inscrição : 08/10/2014
Reputação : 27
Número de Mensagens : 236
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
No alarme cada segundo é equivalente a 30 steps. Aumente para 120 e veja oque acontece.
WellingtonBecker- Games Ranking :
Notas recebidas : D
Data de inscrição : 09/05/2013
Reputação : 105
Número de Mensagens : 824
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Não tem erro isso, é só fazer do jeito que mostrei a ele, colocar uma variável para controlar o ataque, e utilizar dois alarms para alterar essa variável.
O inimigo só vai atacar se a variável estiver em false, então ele controla o tempo Ex: A cada 30 steps ele ataca.
O inimigo só vai atacar se a variável estiver em false, então ele controla o tempo Ex: A cada 30 steps ele ataca.
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Re: Atacando sem parar
Wendryos - Black Horn, obrigado por ajudar e desculpa pela falta de coerência. Eu tentei a adaptar o seu condigo no meu mas não deu certo. Vou mostrar o condigo completo:
no creat do inimigo ta assim:
i_parado=true; // controla a animação e o estado do inimigo se ele esta parado ou nao.
i_atacando=false; // controla a animaçao e o estado do inimigo se ele esta atacando ou nao,
no step eu coloquei assim: obs o step quase completo.
i_angulo=round(point_direction(x,y,ob_player.x,ob_player.y)/45)*45; // faz com que o inimigo fique olhando para o player
switch (i_angulo){ // controla a troca de sprites
case(0):
if (i_atacando=false){
if (i_parado=false){
sprite_index=sp_inim_a_d;}
else{
sprite_index=sp_inim_p_d;}}
else{
sprite_index=sp_inim_at_d;
instance_create(x+22,y,ob_hit);}
break;
case(45):
if (i_atacando=false){
if (i_parado=false){
sprite_index=sp_inim_dia_c_d_a;}
else{
sprite_index=sp_inim_dia_c_d_p;}}
else{
sprite_index=sp_inim_dia_c_d_at;
instance_create(x+22,y-16,ob_hit);}
break; // e assim vai até completar os 360º
if (distance_to_object(ob_player)>15 and distance_to_object(ob_player)<150){
i_parado=false;
mp_potential_step(ob_player.x,ob_player.y,2,false);}
else{
i_parado=true;
speed=0;}// quando o player estiver numa certa distancia entre 15 e 150 pixels o inimigo o segue se nao ele para de seguir.
if (i_atacando=false and distance_to_object(ob_player)<=16){
image_index=0;
i_atacando=true;
alarm[0]=25}// aqui é onde acho q ta o erro. Repetindo: "eu acho" kkk
e no alarm0:
i_atacando=false; // torna a variavel de true para false.
Por favor, mim ajudem ainda sou leigo.
no creat do inimigo ta assim:
i_parado=true; // controla a animação e o estado do inimigo se ele esta parado ou nao.
i_atacando=false; // controla a animaçao e o estado do inimigo se ele esta atacando ou nao,
no step eu coloquei assim: obs o step quase completo.
i_angulo=round(point_direction(x,y,ob_player.x,ob_player.y)/45)*45; // faz com que o inimigo fique olhando para o player
switch (i_angulo){ // controla a troca de sprites
case(0):
if (i_atacando=false){
if (i_parado=false){
sprite_index=sp_inim_a_d;}
else{
sprite_index=sp_inim_p_d;}}
else{
sprite_index=sp_inim_at_d;
instance_create(x+22,y,ob_hit);}
break;
case(45):
if (i_atacando=false){
if (i_parado=false){
sprite_index=sp_inim_dia_c_d_a;}
else{
sprite_index=sp_inim_dia_c_d_p;}}
else{
sprite_index=sp_inim_dia_c_d_at;
instance_create(x+22,y-16,ob_hit);}
break; // e assim vai até completar os 360º
if (distance_to_object(ob_player)>15 and distance_to_object(ob_player)<150){
i_parado=false;
mp_potential_step(ob_player.x,ob_player.y,2,false);}
else{
i_parado=true;
speed=0;}// quando o player estiver numa certa distancia entre 15 e 150 pixels o inimigo o segue se nao ele para de seguir.
if (i_atacando=false and distance_to_object(ob_player)<=16){
image_index=0;
i_atacando=true;
alarm[0]=25}// aqui é onde acho q ta o erro. Repetindo: "eu acho" kkk
e no alarm0:
i_atacando=false; // torna a variavel de true para false.
Por favor, mim ajudem ainda sou leigo.
jailson_dante- Data de inscrição : 10/11/2014
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Quando for postar código, clique nesse ícone.
Mais fácil de analisar.
Mais fácil de analisar.
Sewer Crawler- Data de inscrição : 08/10/2014
Reputação : 27
Número de Mensagens : 236
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Me envia seu GMK caso se usa o GM8, posso tentar resolver isso, porque ta meio confuso(pra min).
Espera, Ne cada movimentação dele ele ataca?(obj_hit)
Espera, Ne cada movimentação dele ele ataca?(obj_hit)
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Re: Atacando sem parar
esse "obj_hit" é uma caixa de colisâo q futuramente sera usada para tirar o hp do player.
vou te enviar o gmk por favor nao olhe pra bagunca de sprites.
vou te enviar o gmk por favor nao olhe pra bagunca de sprites.
jailson_dante- Data de inscrição : 10/11/2014
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Ok Jailson.
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Re: Atacando sem parar
http://www.4shared.com/rar/eaJ9YqD-ce/rpgteste01gmx.html
jailson_dante- Data de inscrição : 10/11/2014
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Eu não tenho o Studio, só o GM8, não vai dar de baixar.
Mas já me adianta uma coisa, esse código ai é do personagem(player) ou do inimigo?
Mas já me adianta uma coisa, esse código ai é do personagem(player) ou do inimigo?
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Re: Atacando sem parar
é do inimigo.
jailson_dante- Data de inscrição : 10/11/2014
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
No create
No Step
No alarm[0]
Coloca
No alarm[1]
Com isso ele só vai fazer o ataque se a variavel paralisado estiver false, oque ocorre a cada 25 steps.
- Código:
paralisado = false
No Step
- Código:
if (i_atacando=false and paralisado=false and distance_to_object(ob_player)<=16){
image_index=0;
i_atacando=true;
alarm[0]=25}
No alarm[0]
Coloca
- Código:
paralisado=true
alarm[1] = 25
No alarm[1]
- Código:
paralisado=false
Com isso ele só vai fazer o ataque se a variavel paralisado estiver false, oque ocorre a cada 25 steps.
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Re: Atacando sem parar
Wendryos - Black Horn o seu código pra mim esta muito certo, e agradeço muito pela sua paciencia, mas não sei porque não funcionou, não surtiu efeito nenhum (q estranho). vou dormir agora e deixo o tópico em aberto.
Obrigado a todos e boa noite!
Obrigado a todos e boa noite!
jailson_dante- Data de inscrição : 10/11/2014
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Creio que seja pelo seu código do step, mas preciso dormir também, amanha trabalho cedo, caso ninguém tiver resolvido, amanha eu volto a tentar te ajudar. Boa noite.
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Re: Atacando sem parar
Seu erro está no script de sprites para ângulo...
Basicamente você programou pra caso o player estiver perto a variável atacando ficar True, mas no script de sprites você disse que caso ela esteja True o sprite mude pro de ataque e crie o objeto de colisão do ataque, o problema é que durante os 25 steps que o alarme é chamado a variável fica positiva, o que faz com que o objeto fique sendo criado e o sprite fique repetindo até que o alarme negativa a variável e isso para, mas aí o step deixa positivo de novo e gera um ciclo vicioso. Estou com sono então amanhã explico como resolve isso...
Basicamente você programou pra caso o player estiver perto a variável atacando ficar True, mas no script de sprites você disse que caso ela esteja True o sprite mude pro de ataque e crie o objeto de colisão do ataque, o problema é que durante os 25 steps que o alarme é chamado a variável fica positiva, o que faz com que o objeto fique sendo criado e o sprite fique repetindo até que o alarme negativa a variável e isso para, mas aí o step deixa positivo de novo e gera um ciclo vicioso. Estou com sono então amanhã explico como resolve isso...
makgamer- Games Ranking :
Notas recebidas : D
Data de inscrição : 29/03/2009
Reputação : 7
Número de Mensagens : 941
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 2.0
- Unity
- Java
- C#
- Javascript
- RPG Maker
- C ou C++
- Outros
Re: Atacando sem parar
Bom dia pessoal! Eu consegui resolver o problema com a ajuda de todos e principalmente do nosso amigo Wendryos - Black Horn. vou explicar como:
no creat do inimigo:
no step do inimigo (aquela linha que eu achava q estava errada):
e no alarm0 do inimigo:
e no alarm1 do inimigo:
Então por enquanto é isso pessoal, mais uma vez agradeço a todos. Tópico resolvido
no creat do inimigo:
- Código:
i_parado=true;
i_atacando=false;
pode_atacar=true;
no step do inimigo (aquela linha que eu achava q estava errada):
- Código:
if (pode_atacar=true){
if (distance_to_object(ob_player)<=16){
image_index=0;
i_atacando=true;
pode_atacar=false;
alarm[0]=5;}} // coloquei esse valor no alarm0 pq se eu colocar um valor maior o inimigo executa mais de um ataque.
e no alarm0 do inimigo:
- Código:
i_atacando=false;
alarm[1]=30;//Faz com que a variavel q controla o tempo da pausa entre ataques "pode_atacar" mude o seu valor a cada 30 steps.
e no alarm1 do inimigo:
- Código:
pode_atacar=true;// onde o valor de false passa a ser true para da o comando do proximo ataque.
Então por enquanto é isso pessoal, mais uma vez agradeço a todos. Tópico resolvido
jailson_dante- Data de inscrição : 10/11/2014
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Tenho umas engines nos quais os inimigos agem parecido. Se quiser te passo os links.
Última edição por Sewer Crawler em Sex 12 Dez 2014, 13:54, editado 1 vez(es)
Sewer Crawler- Data de inscrição : 08/10/2014
Reputação : 27
Número de Mensagens : 236
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Atacando sem parar
Que bom Jailson que conseguimos te ajudar, se precisar é só postar sua duvida que tentaremos saná-las.
Wendryos- Games Ranking :
Notas recebidas : D
Data de inscrição : 21/04/2014
Reputação : 12
Número de Mensagens : 194
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 1
Tópicos semelhantes
» [Resolvido]Parar um sound_loop() sem parar os sons de mesmo nome.
» Dúvida em sprite atacando
» Animação não parar!
» AJUDA aki q o diabo tá atacando meu jogo XD
» I.A inimigo seguir player virando na direção dele e atacando ao se aproximar
» Dúvida em sprite atacando
» Animação não parar!
» AJUDA aki q o diabo tá atacando meu jogo XD
» I.A inimigo seguir player virando na direção dele e atacando ao se aproximar
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|