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.

Pulo: troca de sprites,variaveis e fim do pulo

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

Pulo: troca de sprites,variaveis e fim do pulo

Mensagem por Torrone » Sex Jul 08, 2016 5:41 pm

Boa tarde , minha duvida é a seguinte , não consigo fazer o personagem executar a sprite de pulo ( consigo fazer pular ) enquanto sobe e a sprite enquanto cai , utilizei variaveis num evento create;
pulo = false
rasteira = false
e o codigo q tentei usar foi :
if (keyboard_check_pressed(vk_up))  and place_free(x,y+2)&&(vspeed=-15){

sprite_index = spr_soren_pulandoDir
}
porém não entendo como encaixar as variaveis , gostaria de ajuda também , para mudar a sprite para o outro lado também ; por exemplo pulei pra direita,sprite pra direita ; pulei pra esquerda , sprite pra esquerda.
Devo usar image_ ou sprite_index?
gostaria de dicas de como fazer 
Grato 

Avatar do usuário
TRFN95
Programador
Programador
Reações: 0
Mensagens: 31
Localização: BH-MG
Contato:

Re: Pulo: troca de sprites,variaveis e fim do pulo

Mensagem por TRFN95 » Sex Jul 08, 2016 11:10 pm

Boa noite!
O essencial e você dar uma boa organizada nesse código.

Para fazer pulo da maneira correta trocando a imagem corretamente, seria bom você registrar os estágios e assim criar sua lógica.

No seu caso seria algo similar a isto, e e claro seria bom você adaptar a sua necessidade:


- EVENTO CREATE -

Código: Selecionar todos

estado_pulo = "chao";
lado        = "esquerda";

- EVENTO BEGIN STEP -

Código: Selecionar todos

if( vspeed < 0 ){
    estado_pulo = "subindo"; // Estado se caso subindo no pulo.
    }

if( vspeed > 0 ){
    estado_pulo = "descendo"; // Estado se caso descendo no pulo.
    }

if( vspeed == 0 && place_free( x, y + 1 ) ){
    estado_pulo = "chao"; // Estado se estiver no chão
    }

if( keyboard_check( vk_left ) ){ lado = "esquerda"; } // Define que está para esquerda se pressionar o botão esquerda
if( keyboard_check( vk_right ) ){ lado = "direita"; } // Define que está para direita se pressionar para direita

- EVENTO STEP -

Código: Selecionar todos

if(keyboard_check( vk_up ) && estado_pulo == "chao"){ // Se pressionar e estiver no chão
    if( lado == "esquerda" ){ // Se virado para esquerda
        sprite_index = spr_sprite_pular_esquerda;
        } else {  // Se virado para direita
        sprite_index = spr_sprite_pular_direita;
        }
    vspeed = -15; // "Pula"
    }

if( estado_pulo == "subindo" ){ image_single = 0; } // Se esta subindo, usa a imagem 0 ( Zero ) da sprite.
if( estado_pulo == "descendo" ){ image_single = 1; } // Se esta descendo, usa a imagem 1 ( Um ) da sprite.
if( estado_pulo == "chao" ){ 
    // codigo para voltar ao estado inicial 
    }

Recomendo ver alguns tutoriais sobre Variáveis e organização de instruções no fórum para lhe auxiliar melhor! Abraço

Avatar do usuário
Torrone
Novato
Novato
Reações: 0
Mensagens: 7

Re: Pulo: troca de sprites,variaveis e fim do pulo

Mensagem por Torrone » Sáb Jul 09, 2016 2:10 am

Obrigado cara me ajudou bastante msm , vi poucos tutoriais de variaveis e ja fui me aventurar  :sorrir2: , consegui entender mais um pouco sobre variaveis 

Avatar do usuário
TRFN95
Programador
Programador
Reações: 0
Mensagens: 31
Localização: BH-MG
Contato:

Re: Pulo: troca de sprites,variaveis e fim do pulo

Mensagem por TRFN95 » Sáb Jul 09, 2016 10:14 am

Não tem de que, precisando também posso fazer uma engine para lhe auxiliar.

Até mais

Avatar do usuário
Torrone
Novato
Novato
Reações: 0
Mensagens: 7

Re: Pulo: troca de sprites,variaveis e fim do pulo

Mensagem por Torrone » Sáb Jul 09, 2016 5:24 pm

então cara, utilizei variaveis como voce me explicou tanto tem texto "" , quanto em numeros porém o meu personagem nao consegue "encontrar" o chão.
Mudei o keyboard_check pra keyboard_check_pressed pois ele estava pulando sozinho.
E também retirei o valor do codigo inserido no begin step: 

Código: Selecionar todos

if( vspeed == 0 && place_free( x, y + 1 ) ){
    estado_pulo = "chao"; // Estado se estiver no chão
deixei apenas o (x,y) .até ai ocorreu tudo certo ele está pulando de boa , porém não faz a troca de sprites e executa apenas a sprite_pulando_direita. 

Avatar do usuário
TRFN95
Programador
Programador
Reações: 0
Mensagens: 31
Localização: BH-MG
Contato:

Re: Pulo: troca de sprites,variaveis e fim do pulo

Mensagem por TRFN95 » Dom Jul 10, 2016 12:34 am

Você pode usar tambem:

Código: Selecionar todos

// 0: Chao
// 1: Subindo
// 2: Descendo

// Esse codigo e mais direto, mas e uma boa alternativa para evitar o placefree nesse caso

estado_pulo = min(2,2+sign(vspeed))*(!!gravity);

switch(estado_pulo){

case 0: estado_pulo = "chao"; break;
case 1: estado_pulo = "subindo"; break;
case 2: estado_pulo = "descendo"; break;

}

Quanto as sprites, depende mto do seu jogo. Posso fazer uma engine para auxiliar melhor você. Qual e sua versão de Game Maker?

Avatar do usuário
Torrone
Novato
Novato
Reações: 0
Mensagens: 7

Re: Pulo: troca de sprites,variaveis e fim do pulo

Mensagem por Torrone » Dom Jul 10, 2016 1:22 am

Uso o GMS pro cara , eu consegui fazer agora usei o seguinte:
evento create>
andando=false;
noar=false;
lado=1;
step>

Código: Selecionar todos

if (place_free(x,y+1)){noar=true;caindo=true;gravity=0.6;}//se tiver espaco embaixo, ativar a gravidade
else if !(place_free(x,y+1)){noar=false;caindo=false;gravity=0;}//se nao tiver espaco embaixo, desativar a gravidad
if (keyboard_check(vk_right)){andando=true;x+=7;lado=1;}image_speed= 0.5//andar pra direita
if (keyboard_check(vk_left)){andando=true;x-=7;lado=-1;}image_speed= 0.5//andar pra esquerda
if !(keyboard_check(vk_right))and!(keyboard_check(vk_left)){andando=false;}//checar variaveis 
if (keyboard_check_pressed(vk_up))and(noar=false){vspeed-=9;}image_speed= 0.3//se nao estiver no ar, pular
//sprite
image_xscale=lado;//com isso nao e necessario usar sprites das duas direcoes do seu personagem, apenas a que esta virada para a direita!
if (noar=false)//se nao estiver no ar

{
 if (andando=true){sprite_index=spr_soren_dir;}//mudar o sprite para o sprite dele andando
 else if (andando=false){sprite_index=spr_soren_parado;}//mudar o sprite para o sprite dele parado
}
else if (noar=true)//se ele estiver no ar
{sprite_index=spr_soren_pulandoDir}//mudar para o sprite dele no ar
if vspeed>0
{
sprite_index=spr_soren_caindodir
}
dei uma escavada no antigo fórum e consegui a explicação, mas se estiver disposto a fazer uma engine kkkk é sempre aceito ver codigos diferentes.
No fim eu nao estava conseguindo fazer a animação de queda, entao usei o if vspeed> 0 e funcionou.

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes