Aqui é o código em que ele cria a animação do corte da espada:
E aqui é o código dele voltando do ataque:
E sobre a animação do personagem atacando:
O tempo dos alarms é o tempo necessário pra essa animação iniciar e terminar. Dai eu troco a sprite novamente só no momento em que o jogador volta do ataque.
Tem algum método pra posicionar um objeto no centro de um sprite? Me refiro ao centro da origem, que a gente determina no editor das sprites:
Única coisa que percebi no GM, é que ele executa muito rápido os comandos, algumas coisas sem colocar um alarm junto não funcionam como deveria.
Conseguiu resolver este problema da animação com as dicas do pessoal acima?
Tô com pouco tempo pra mexer no GM por enquanto, próximo passo agora é fazer aparecer o dano :D
Obrigado pela ajuda.
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. |
Dúvida sobre animações de batalha
Re: Dúvida sobre animações de batalha
Única coisa que eu achei chata por enquanto é esse tal de alarm. Deveria ter um comando tipo "wait" pra usar dentro da própria janela de códigos, porque algumas ações precisam esperar outras serem executadas pra dai entrar em ação, e isso de colocar uma parte do código no evento step e outra parte no alarm é ruim.
Re: Dúvida sobre animações de batalha
Não entendi muito bem...
Você pode usar os Alarm's para controlar apenas as variáveis e todo o código ficaria no step, assim dando melhor visibilidade ao código no step, é assim que eu faço...
Você pode usar os Alarm's para controlar apenas as variáveis e todo o código ficaria no step, assim dando melhor visibilidade ao código no step, é assim que eu faço...
Re: Dúvida sobre animações de batalha
Você também pode criar variáveis que funcionam como alarme.
Ao invés de criar um alarme você pode criar espera = room_speed * 2
E no step colocar um espera--
If (espera == 0) ação desejada.
Ao invés de criar um alarme você pode criar espera = room_speed * 2
E no step colocar um espera--
If (espera == 0) ação desejada.
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Dúvida sobre animações de batalha
Boa tarde,
Olá None realmente é uma outra forma de criar eventos, mas, eu não costumo e nem gosto de usar assim. Não sei se é o caso, mas eu acho que desta forma use mais memoria.
Exemplo:
Eu realmente não gosto muito de usar isso, pois temos o alarm para isso, mas cada uma com a sua maneira de programar.
Abraços.
Olá None realmente é uma outra forma de criar eventos, mas, eu não costumo e nem gosto de usar assim. Não sei se é o caso, mas eu acho que desta forma use mais memoria.
Exemplo:
Código: Selecionar todos
evento1 = room_speed * 2; //Ou qualquer outra forma,
if (evento1 >= 50) { ação; };
if (evento1 >= 100) { ação; evento1 = 0 }; ele retornara o evento assim como o Alarm;
Abraços.
Re: Dúvida sobre animações de batalha
Alguém me explica pq algumas vezes a animação não sai como deveria? O primeiro gif é como é para ser, já no segundo, percebam a sprite do jogador quando ele vai atacar:
Sem contar que as vezes ele salta uns frames da animação. É pq o GM executa os comandos muito rápido?
Sem contar que as vezes ele salta uns frames da animação. É pq o GM executa os comandos muito rápido?
Re: Dúvida sobre animações de batalha
Identificou se tem um padrão na ocorrência, por exemplo:
inicia fazendo o movimento corretamente e no próximo ataque a movimentação muda, ou a cada dois corretos uma movimentação sai errada, talvez até faz a primeira correta e as demais erradas.
Só pelas imagens identifica-se na segunda imagem que a Sprite da espada vai para frente na metade do caminho e antes do personagem saltar de volta a sua posição inicial, a espada volta para trás. O mais provável é que esteja entrando em algum evento no step no momento que não deveria.
inicia fazendo o movimento corretamente e no próximo ataque a movimentação muda, ou a cada dois corretos uma movimentação sai errada, talvez até faz a primeira correta e as demais erradas.
Só pelas imagens identifica-se na segunda imagem que a Sprite da espada vai para frente na metade do caminho e antes do personagem saltar de volta a sua posição inicial, a espada volta para trás. O mais provável é que esteja entrando em algum evento no step no momento que não deveria.
Re: Dúvida sobre animações de batalha
Qual código você usa para o ataque?
Caso queira, isso é para poder analisar melhor. Responda aqui com o código.
Caso queira, isso é para poder analisar melhor. Responda aqui com o código.
Re: Dúvida sobre animações de batalha
Zalliant, isso depende do nível de controle que você deseja.
Se eu quero controlar mais detalhadamente um evento eu faço daquela maneira, caso eu queria simplesmente criar um flag ou uma checagem eu uso o alarm.
Em relação ao uso de memória eu honestamente não acho que haja diferença, a não ser que você permita que sua variável de contagem se torne muito negativa.
Sobre a animação, creio que você pode fazer uma checagem em relação às distância.
Por exemplo
If (inimigo_atual.x - x <= 5) image_index = image_number - 2;
Else If (hspeed < 0) image_index = image_number - 1;
No primeiro if você pode testar com o point distance ao invés do método que eu usei, mas basicamente estou checando se minha distância para o inimigo esta pequena (o limite deve estar errado), se estiver ele vai usar a penúltima imagem (que eu acho ser a imagem que ele ataca) de sua sprite, depois se a distância não esta pequena ele vai checar se a hspeed está negativa (ele está voltando) e colocar a última imagem da sprite.
Depois disso você volta ao momento anterior e coloca o image speed novamente.
Se eu quero controlar mais detalhadamente um evento eu faço daquela maneira, caso eu queria simplesmente criar um flag ou uma checagem eu uso o alarm.
Em relação ao uso de memória eu honestamente não acho que haja diferença, a não ser que você permita que sua variável de contagem se torne muito negativa.
Sobre a animação, creio que você pode fazer uma checagem em relação às distância.
Por exemplo
If (inimigo_atual.x - x <= 5) image_index = image_number - 2;
Else If (hspeed < 0) image_index = image_number - 1;
No primeiro if você pode testar com o point distance ao invés do método que eu usei, mas basicamente estou checando se minha distância para o inimigo esta pequena (o limite deve estar errado), se estiver ele vai usar a penúltima imagem (que eu acho ser a imagem que ele ataca) de sua sprite, depois se a distância não esta pequena ele vai checar se a hspeed está negativa (ele está voltando) e colocar a última imagem da sprite.
Depois disso você volta ao momento anterior e coloca o image speed novamente.
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Dúvida sobre animações de batalha
Aqui é o código em que ele vai na direção do inimigo:Zalliant escreveu:Qual código você usa para o ataque?
Caso queira, isso é para poder analisar melhor. Responda aqui com o código.
Código: Selecionar todos
if (atacandoinimigo == true)
{
if (inimigo_atual == 1)
{
with (obj_player)
{
sprite_index = spr_aff_atacando1;
image_speed = .22;
other.alarm[1] = .47 * room_speed; // nesse alarm ele aciona a animação do corte da espada
path_start(atacando_inimigo1,26, 0, true)
other.atacandoinimigo = false;
}
}
}
Código: Selecionar todos
if (animatknormal == true)
{
audio_play_sound(atacando_inimigo, 1, false);
instance_create(obj_inimigo1.x, obj_inimigo1.y, anima_ataque_normal);
with (obj_inimigo1)
{
image_blend = c_fuchsia;
}
alarm[2] = .42 * room_speed; // nesse alarm ele aciona a volta do personagem
animatknormal = false;
}
Código: Selecionar todos
if (voltandoataque == true)
{
with (obj_inimigo1)
{
image_blend = c_white;
}
with (obj_player)
{
sprite_index = spr_aff_voltandoatk;
path_start(voltando_inimigo1, 30,0, true);
sprite_index = global.sprite_batalha;
image_speed = .2;
other.voltandoataque = false;
}
}
O tempo dos alarms é o tempo necessário pra essa animação iniciar e terminar. Dai eu troco a sprite novamente só no momento em que o jogador volta do ataque.
Tem algum método pra posicionar um objeto no centro de um sprite? Me refiro ao centro da origem, que a gente determina no editor das sprites:
Editado pela última vez por DarlesLSF em Qui Set 27, 2018 7:29 am, em um total de 1 vez.
Re: Dúvida sobre animações de batalha
Isso que eu não entendo, o por que dele fazer isso. Todos as partes dentro do step event são acionadas por alguma variável, não tem pedaços soltos que ocorrem toda hora.Midgard escreveu:Identificou se tem um padrão na ocorrência, por exemplo:
inicia fazendo o movimento corretamente e no próximo ataque a movimentação muda, ou a cada dois corretos uma movimentação sai errada, talvez até faz a primeira correta e as demais erradas.
Só pelas imagens identifica-se na segunda imagem que a Sprite da espada vai para frente na metade do caminho e antes do personagem saltar de volta a sua posição inicial, a espada volta para trás. O mais provável é que esteja entrando em algum evento no step no momento que não deveria.
Única coisa que percebi no GM, é que ele executa muito rápido os comandos, algumas coisas sem colocar um alarm junto não funcionam como deveria.
Re: Dúvida sobre animações de batalha
Bom dia Daniel,
Como o None disse realmente você pode fazer isso para deixar a animação como quer:
Como o None disse realmente você pode fazer isso para deixar a animação como quer:
Pode usar também um 'distance_to_object' e ir mudando a animação conforme a proximidade. No seu código não há essa checagem, apenas a velocidade da animação.Sobre a animação, creio que você pode fazer uma checagem em relação às distância.
Por exemplo
If (inimigo_atual.x - x <= 5) image_index = image_number - 2;
Else If (hspeed < 0) image_index = image_number - 1;
Re: Dúvida sobre animações de batalha
Você tá falando sério que não está vendo a checagem no código? Oo
É só fazer a conta, quanto é inimigo.x - x
Note que não tem velocidade de animação no meu código também.
É só fazer a conta, quanto é inimigo.x - x
Note que não tem velocidade de animação no meu código também.
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Dúvida sobre animações de batalha
Eu não disse que estava completamente certo.
Observe minha fala, sobre o distance_to_object;
Uma maneira simples de se fazer isso seria assim, pelo menos ao meu ver.
Cada um com sua maneira de programar.
Observe minha fala, sobre o distance_to_object;
Uma maneira simples de se fazer isso seria assim, pelo menos ao meu ver.
Cada um com sua maneira de programar.
Re: Dúvida sobre animações de batalha
Vamos fingir que no mesmo post eu não disse que o point distance seria uma alternativa à minha checagem.
O mais engraçado é que eu citei um método matemático porque ele é mais leve do que o uso de funções, e já que você havia criticado meu exemplo do timer por isso eu optei por exemplificar com um método mais leve...
O mais engraçado é que eu citei um método matemático porque ele é mais leve do que o uso de funções, e já que você havia criticado meu exemplo do timer por isso eu optei por exemplificar com um método mais leve...
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Dúvida sobre animações de batalha
Bom dia man, Acontece porque com o alarm no step, ele continua a contagem enquanto a operação do step for true, logo, quando entrou no alarm, no step já está novamente contando para que entre no alarm de novo. Desta forma ele gerou esta alternância de sprites fora da hora desejada.Isso que eu não entendo, o por que dele fazer isso. Todos as partes dentro do step event são acionadas por alguma variável, não tem pedaços soltos que ocorrem toda hora.
Conseguiu resolver este problema da animação com as dicas do pessoal acima?
Re: Dúvida sobre animações de batalha
Nessas horas uma opção wait ou sleep no meio do código faria toda diferença, não precisaria ativar um alarm. Acho besteira ter uma parte do código no step e outra dentro de um alarm.Midgard escreveu:Bom dia man, Acontece porque com o alarm no step, ele continua a contagem enquanto a operação do step for true, logo, quando entrou no alarm, no step já está novamente contando para que entre no alarm de novo. Desta forma ele gerou esta alternância de sprites fora da hora desejada.Isso que eu não entendo, o por que dele fazer isso. Todos as partes dentro do step event são acionadas por alguma variável, não tem pedaços soltos que ocorrem toda hora.
Sim, consegui resolver. Alterei a forma como trocava a sprite. No momento tá nisso:Conseguiu resolver este problema da animação com as dicas do pessoal acima?
Tô com pouco tempo pra mexer no GM por enquanto, próximo passo agora é fazer aparecer o dano :D
Re: Dúvida sobre animações de batalha
Tá ficando muito legal!
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Dúvida sobre animações de batalha
Bom dia, novamente com uma dúvida haha
Como eu faço pra só aparecer números inteiros no dano?
Aqui o código:
No caso, o quebrados que aparecem depois da virgula provém do "danovariavel". No rpg maker, só é contado o número antes da vírgula, o restante é descartado.
Como eu faço pra só aparecer números inteiros no dano?
Aqui o código:
Código: Selecionar todos
var atkafftemp = global.atk;
var danovariavel = global.atk;
atkafftemp *= 3;
if (global.inimigo_atual == 1)
{
atkafftemp -= global.def_inimigo1;
} else if (global.inimigo_atual == 2)
{
atkafftemp -= global.def_inimigo2;
} else if (global.inimigo_atual == 3)
{
atkafftemp -= global.def_inimigo3;
}
atkafftemp /= 3;
danovariavel *= irandom_range(50,80);
danovariavel /= 100;
atkafftemp =+ danovariavel;
global.bDamage = atkafftemp;
if (global.inimigo_atual == 1)
{
global.hp_inimigo1 -= global.bDamage;
} else if (global.inimigo_atual == 2)
{
global.hp_inimigo2 -= global.bDamage;
} else if (global.inimigo_atual == 3)
{
global.hp_inimigo3 -= global.bDamage;
}
calculodano = false;
Re: Dúvida sobre animações de batalha
Você pode usar a função round() para arredondar, ceil() arredonda para cima, floor() arredonda para baixo.
Dentro dos parênteses fica o valor a ser arredondado.
Aliás, acho que esta linha está errada, não?
Dentro dos parênteses fica o valor a ser arredondado.
Aliás, acho que esta linha está errada, não?
atkafftemp =+ danovariavel
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Dúvida sobre animações de batalha
Sim, eu percebi isso depois que mandei a mensagem aqui, já foi arrumado kkkNone escreveu:Você pode usar a função round() para arredondar, ceil() arredonda para cima, floor() arredonda para baixo.
Dentro dos parênteses fica o valor a ser arredondado.
Aliás, acho que esta linha está errada, não?atkafftemp =+ danovariavel
Obrigado pela ajuda.
Quem está online
Usuários navegando neste fórum: MSNbot Media e 9 visitantes