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.

Problemas com animações

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
186557
Programador
Programador
Reações: 0
Mensagens: 28

Problemas com animações

Mensagem por 186557 » Seg Dez 24, 2018 11:35 pm

Estou com MUITOS problemas de animação com um player, pra facilitar, vou escrever oque cada sprite é:

spr_player_d1 = animação de andar pra direita
spr_player_e1 = animação de andar pra esquerda
spr_player_d2 = parado e olhando para a direita
spr_player_e2 = parado e olhando para a esquerda

Agora os problemas: Quando o player anda a animação de andar funciona normalmente, mas quando o player fica parado a animação continua (na verdade a animação nunca para e os spr_player_d2 e spr_player_e2 não funcionam).
Outro problema é a animação de pulo que quando o player pula para a direita por exemplo o sprite de pulo só funciona até o player atingir a altura maxima do pulo, na hora de cair ele volta com a animação de andar para a direita(mesma coisa com a esquerda), e a animação de pulo só funciona se for precionado "direita ou esquerda + pulo" se apertar só para pular ela não funciona.

//direita
if xspeed=5{sprite_index=spr_player_d1;image_speed=0.4}
if xspeed>5{sprite_index=spr_player_d2;image_speed=0.1}
//esquerda
if xspeed=-5{sprite_index=spr_player_e1;image_speed=0.4}
if xspeed<-5{sprite_index=spr_player_e2;image_speed=0.1}
}

//pulo
if yspeed = -12
{
if xspeed < 0 && y > other.y-12 {sprite_index=spr_pulo_esquerda;image_speed=1}
if xspeed > 0 && y < other.y-12 {sprite_index=spr_pulo_direita;image_speed=1}
}

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Problemas com animações

Mensagem por None » Seg Dez 24, 2018 11:56 pm

O seu código está meio confuso.

Por que você está checando se o xspeed é exatamente 5? Não deveria ser 0?


Você está usando other dentro do step event? E por que você está usando isso?

A lógica do seu código (para mim, ao menos) não faz muito sentido.

Para checar o lado, você pode simplesmente cria uma variável chamada lado/face/etc, 0 direita, 1 cima, 2 esquerda, 3 baixo.
Se o usuário pressionou para qualquer um desses lados, a variável lado recebe o valor específico, assim você não precisa checar a direção usando a velocidade dele mais.

Tendo feito isso você precisa definir prioridades, creio que a animação do pulo tenha prioridade em relação às demais, então você checa se ele está pulando (velocidade vertical é diferente de 0, ou ele não está no chão, como você lida com isso fica a seu gosto), depois disso você precisa checar se ele está subindo ou descendo, se a velocidade vertical for menor que zero ele está subindo, então ele usa a Sprite de subir, se não ele está descendo, Sprite de descer.

Em relação a de direita ou esquerda, basta colocar caso a velocidade vertical for diferente de 0 então o imagem xscale = sign(velocidade horizontal) e assim você nem precisa das Sprite dos dois lados (isso só funciona bem se a sua Sprite é centralizada na horizontal).
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

Avatar do usuário
186557
Programador
Programador
Reações: 0
Mensagens: 28

Re: Problemas com animações

Mensagem por 186557 » Ter Dez 25, 2018 1:15 am

Desculpe, eu não entendi direito, pode me explicar melhor?
Me desculpe, eu uso o Game maker a pouco tempo e ainda tem bastante coisa que eu ainda não
sei exatamente como fazer (como variaveis)

Avatar do usuário
AragaSam
Artista
Artista
Reações: 0
Mensagens: 18

Re: Problemas com animações

Mensagem por AragaSam » Ter Dez 25, 2018 11:17 am

Eu uso um código meio longo, mas que pra mim funcionou, vou copiar e colar e se não entender te explico, como comecei faz pouco tempo e não pude programar faz umas duas semanas por falta de tempo ele da bem iniciante mas não bugou (como o meu é pra aqueles jogos vistos de cima, top view ou top down não sei bem, é só apagar as partes de subir e descer caso precise pra um de plataforma e adaptar)

///////////
// ANDAR //
///////////

essa parte vai verificar a tecla que foi apertada e definir a direção e o sprite

if keyboard_check (ord ( "W" )) {
andar = true
cima = true
parado = false
vspeed=-1.5;
sprite_index = spr_player_movendo_cima
}

if keyboard_check (ord ( "S" )) {
andar = true
baixo = true
parado = false
vspeed=1.5;
sprite_index = spr_player_movendo_baixo
}

if keyboard_check (ord ( "A" )) {
andar = true
esquerda = true
parado = false
hspeed=-1.5;
sprite_index = spr_player_movendo_esquerda;
}

if keyboard_check (ord ( "D" )) {
andar = true
direita = true
parado = false
hspeed=1.5;
sprite_index = spr_player_movendo_direita;
}

essa parte vai fazer ele não ficar com duas variáveis pra direções opostas (estava programando uma mecânica de atirar flechas e isso ajudou)

if esquerda = true { direita = false }
if direita = true { esquerda = false }
if cima = true { baixo = false }
if baixo = true { cima = false }

/// parar de andar ao soltar a tecla

quando soltar a tecla o player para e mostra o sprite dele parado na direção certa

if keyboard_check_released (ord("W")) {
sprite_index = spr_player_parado_cima
parado = true
}

if keyboard_check_released (ord("S")) {
sprite_index = spr_player_parado_baixo
parado = true
}

if keyboard_check_released (ord("A")) {
sprite_index = spr_player_parado_esquerda
parado = true
}

if keyboard_check_released (ord("D")) {
sprite_index = spr_player_parado_direita
parado = true
}

if parado = true {
vspeed = 0;
hspeed = 0;
andar = false
}

Ficou enorme, mas foi a melhor forma que achei de tudo funcionar
42

Avatar do usuário
186557
Programador
Programador
Reações: 0
Mensagens: 28

Re: Problemas com animações

Mensagem por 186557 » Ter Dez 25, 2018 9:48 pm

Certo eu dei uma olhada no seu codigo e no codigo que eu estou usando e cheguei nesse resultado:

if keyboard_check(vk_right) {
xspeed = 5
sprite_index=spr_player_d1;image_speed=0.4
}
else if keyboard_check(vk_left) {
xspeed = -5
sprite_index=spr_player_e1;image_speed=0.4
}
else xspeed = 0;

if keyboard_check_released(vk_right){
sprite_index=spr_player_d2
}

if keyboard_check_released(vk_left){
sprite_index=spr_player_e2
}


As animações de andar e ficar parado funcionaram, mas ainda to com duvida com as animações de pulo, pois ainda estou vendo como corrigir os erros

Avatar do usuário
AragaSam
Artista
Artista
Reações: 0
Mensagens: 18

Re: Problemas com animações

Mensagem por AragaSam » Ter Jan 01, 2019 10:21 pm

Com o pulo eu não saberia dizer, pois estou estudando mais jogos no estilo zelda por enquanto, mas se conseguir deixa aqui também pra ajudar quem for acessando. Fico feliz em ter ajudado mesmo estando aprendendo agora também.
42

Avatar do usuário
186557
Programador
Programador
Reações: 0
Mensagens: 28

Re: Problemas com animações

Mensagem por 186557 » Dom Jan 06, 2019 12:40 am

Kk tudo bem, demorei um pouco mas consegui resolver, seu codigo ajudou muito. Obrigado!

Responder

Quem está online

Usuários navegando neste fórum: Semrush [Bot] e 1 visitante