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.

Troca de sprites

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

Troca de sprites

Mensagem por Ich1 » Dom Out 03, 2021 12:18 pm

Estou tentando aprender a usar o Game Maker 2 e estou com um problema pra trocar o sprite, quando eu fico no alcance do inimigo, ele troca o script idle pra chase, o problema é que o sprite continua parado e não muda pra animação dele correndo, alguém sabe o que pode estar dando erro?

o Código

if (hspd) != 0 image_xscale = sign(hspd); //TROCA O LADO DO SPRITE


if distance_to_object(obj_player) <distance
{
state = EnemyState.CHASE
image_index = spr_enemyrun;
}

Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Re: Re: Troca de sprites

Mensagem por Christian » Dom Out 03, 2021 1:19 pm

Já tentou usar um switch no evento draw?
Acho que resolveria teu problema

Avatar do usuário
Ich1
Novato
Novato
Reações: 0
Mensagens: 2

Re: Re: Troca de sprites

Mensagem por Ich1 » Dom Out 03, 2021 1:29 pm

Christian escreveu:Já tentou usar um switch no evento draw?
Acho que resolveria teu problema
Nunca, sou bem iniciante, não sei quase nada, pode me mostrar como eu faria isso?

Avatar do usuário
Christian
Membro
Membro
Reações: 0
Mensagens: 75

Re: Re: Troca de sprites

Mensagem por Christian » Dom Out 03, 2021 2:41 pm

Claro que posso mostrar.
É bem simples mesmo, olha só
No evento draw coloque o seguinte:

Código: Selecionar todos

// aqui vai mostrar a sprite certa para cada state
switch state {
case EnemyState.IDLE:
sprite_index = spr_enemyidle;
break;

case EnemyState.CHASE:
sprite_index = spr_enemyrun;
break;
}

//aqui desenha o teu inimigo
draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha)
Uma coisa que notei é que tu está usando "image_index" para mostrar a sprite, sempre que quiser mostrar uma sprite tem que usar o "sprite_index"

O image_index serve para indicar o frame da sprite.

Lá no teu código onde checa a troca de sprite tem que apagar somente o "image_index = spr_enemyrun"

Faça o teste. Qualquer coisa vou estar por aqui.

Responder

Quem está online

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