Vamos la então, este é um metodo que eu utilizo e gosto muito, vamos utilizar uma variável inteira, que vai receber um numero de qualquer valor, esse numero iremos utilizar ele dentro do nosso Switch para alterar a sprite.
No seu Evento Criar (Event Creat), vamos definir nossa variável:
Após isso vamos criar nosso script que vai trata de altera as sprites. Observe bem, iremos usar dois scripts, um sera responsável por alterar a sprite, e outro pra definir qual sprite estamos usando atualmente.
Agora ja esta funcionando, lembre-se de colocar suas sprites dentro do código.
Vamos agora para Evento Etapa (Event Step), vamos definir quando queremos alterar o valor do nosso direc, altera esse valor é a mesma coisa que alterar a sprite usando o sprite_index. Vai ficar assim
Código: Selecionar todos
if hspd == 0 {
if direc = 2 {
direc = 0; //<-- Sprite Parado Direita
}
if direc = 3 {
direc = 0; //<-- Sprite Parado Esquerda
}
}
if hspd != 0 {
if tecla_dir {
direc = 2; //<-- Sprite Andando Direita
}
if tecla_esq {
direc = 3; //<-- Sprite Andando Esquerda
}
}
Com isso você ja consegue altera a sprite com muita facilidade. Você pode usar diversas combinações pra altera de uma sprite pra outra, por exemplo:
Código: Selecionar todos
if tecla_pulo {
if direc = 0 || direc = 2 { //<-- Verifica se estou com a sprite da direita definida
direc = 4; //<-- Define a sprite de pulo da direita
}
if direc = 1|| direc = 3 { // Faz a mesma coisa porem pra esquerda
direc = 5; //<-- Define a sprite de pulo da esquerda
}
}
Assim nós temos um código todo definido de sprites. A Sprite inicial, ela é definida ja no nosso criar, usamos direc = 0, pra especificar a sprite parado(Idle), seja da direita ou da esquerda. Você pode duplica a sprite espelha ela, mas eu prefiso apenas muda o xscale, ficaria assim:
Código: Selecionar todos
case 0:
scrChangeSprite(suaSpirte);
image_xscale = -1;
break;
Lembre-se de sempre volta ao direc inicial, por exemplo, se vc pulou, seu direc vai ser igual a 4 ou 5, dessa forma, você precisa fazer com que ele volta para direc inicial 0, ou 1, dependendo de qual lado voce esta olhando, pra isso é só fazer:
Código: Selecionar todos
if hspd == 0 {
if direc = 2 || direc = 4 {
direc = 0; //<-- Sprite Parado Direita
}
if direc = 3 || direc = 5 {
direc = 0; //<-- Sprite Parado Esquerda
}
}
Assim, quando tocar o chão, seu hspd vai ser 0, e vai ir pra sprite de parado(idle). Pronto !
Código: Selecionar todos
// Script assets have changed for v2.3.0 see
// https://help.yoyogames.com/hc/en-us/articles/360005277377 for more information
function scrChangeSprite(_sprite) {
//@arg Sprite
if (sprite_index != _sprite) {
sprite_index = _sprite;
image_index = 0;
}
}
function scrDirec() {
switch direc {
case 0:
scrChangeSprite(suaSpirte);
break;
case 1:
scrChangeSprite(suaSpirte);
break;
case 2:
scrChangeSprite(suaSpirte);
break;
case 3:
scrChangeSprite(suaSpirte);
break;
case 4:
scrChangeSprite(suaSpirte);
break;
case 5:
scrChangeSprite(suaSpirte);
break;
}
}
Ah, eu testei só parte do código, caso de algum erro, comenta aqui que eu resolvo ! Abraço e fique em paz !