pulo esquerda e direita

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

pulo esquerda e direita

Mensagem por darth vader em Seg 12 Abr 2010, 10:42

essa é minha principal dúvida: de acordo com o lado, o sprite mudar para o de pulo,o mesmo com o sprite de defesa q criei.
ai vai a informação de movimento(é q eu ñ queria mexer nos movimentos básicos,Happy).

Information about object: object0

Sprite: parado
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Step Event:
execute code:

//Gravidade
if place_free(x,y+2){gravity=2}//se estiver livre de colisões 2 pixels abaixo, a gravidade será 1
else//senão
gravity=0//a gravidade vai ser 0

//limitando a velocidade vertical
if vspeed>12{vspeed=12}//se for maior que 15, retorna a 15

//MOVIMENTAÇÃO

//direita
if keyboard_check(vk_right)//se a seta direita for pressionada
{
sprite_index=andando//sprite vai ser "direita"
if place_free(x+5,y){x+=5}//se estiver livre de colisões 5 pixels a frente, andará 5 pixels a frente.
}
//esquerda
if keyboard_check(vk_left)//se a seta esquerda for pressionada
{
sprite_index=andando_left//sprite vai ser "esquerda"
if place_free(x-5,y){x-=5}//se estiver livre de colisões 5 pixels atras, voltará 5 pixels.

}
//Pulo
if keyboard_check_pressed(vk_up)//se a seta cima for pressionada
{
if!place_free(x,y+2){vspeed=-20}//se não estiver livre de colisões 2 pixels abaixo, a velocidade vertical vai ser -20 (cima)
}

Collision Event with object object1:
move in direction direction at most 12 till a contact with solid objects
set the vertical speed to 0
set the horizontal speed to 0

Key Press Event for D-key Key:
set the sprite to defesa with subimage 0 and speed 1

Key Release Event for <Left> Key:
set the sprite to parado_left with subimage 0 and speed 1

Key Release Event for <Right> Key:
set the sprite to parado with subimage 0 and speed 1

Key Release Event for D-key Key:
set the sprite to parado with subimage 0 and speed 1


De já agradeço,fallows!!!

Happy

darth vader

Número de Mensagens : 85
Data de inscrição : 29/10/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: pulo esquerda e direita

Mensagem por Markituh em Seg 12 Abr 2010, 11:14

Olha,você quer que quando estiver para tal lado,mudar para o sprite de pulo nesse lado,certo? Se for,é muito simples cara. Basta apenas criar uma sprite para cada lado.

Ou você pode fazer o seguinte no código de pulo:
Código:
if keyboard_check_pressed(vk_up) && image_index=andando_left or image_index=parado_left//se a seta cima for pressionada e estiver na imagem do lado esquerdo andando ou do lado esquerdo parado
{
if!place_free(x,y+2){image_xscale=-1;vspeed=-20}//se não estiver livre de colisões 2 pixels abaixo, vai virar pro lado esquerdo e a velocidade vertical vai ser -20 (cima)
}
else
{
if keyboard_check_pressed(vk_up) && image_index=andando or image_index=parado//se a seta cima for pressionada e estiver na imagem do lado direito andando ou do lado direito parado
{
if!place_free(x,y+2){image_xscale=1;vspeed=-20}//se não estiver livre de colisões 2 pixels abaixo, vai virar pro lado direito e a velocidade vertical vai ser -20 (cima)
}
}

Tente isso.

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: pulo esquerda e direita

Mensagem por itallo em Seg 12 Abr 2010, 11:19

crie uma variavel com o nome "direita"

pense:
se direita = true e vspeed = 0
{
spr_index = andando_direita
}

se direita = false e vspeed = 0
{
spr_index = andando_esquerda
}

se direita = true e vspeed <> 0
{
spr_index = pulo_direita
}

se direita = false e vspeed <> 0
{
spr_index = pulo_esquerda
}


//entao os movimentos ficariam assim:
if keyboard_check(vk_right) and vspeed = 0//se a seta direita for pressionada
{
direita = true
sprite_index=andando//sprite vai ser "direita"
if place_free(x+5,y){x+=5}//se estiver livre de colisões 5 pixels a frente, andará 5 pixels a frente.
}
//esquerda
if keyboard_check(vk_left) and vspeed = 0//se a seta esquerda for pressionada
{
direita = false
sprite_index=andando_left//sprite vai ser "esquerda"
if place_free(x-5,y){x-=5}//se estiver livre de colisões 5 pixels atras, voltará 5 pixels.
}


//PULO
if keyboard_check_pressed(vk_up)//se a seta cima for pressionada
{
if!place_free(x,y+2){vspeed=-20}//se não estiver livre de colisões 2 pixels abaixo, a velocidade vertical vai ser -20 (cima)
if direita = true{sprite_index = "pulo_direita"
if direita = false{sprite_index = "pulo_esquerda"
}

itallo

Ranking : Sem avaliações
Número de Mensagens : 969
Idade : 24
Data de inscrição : 26/08/2009
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.zuluhotel.com.br

Voltar ao Topo Ir em baixo

Re: pulo esquerda e direita

Mensagem por darth vader em Seg 12 Abr 2010, 11:39

bem, vou tentar...
Obko, posso fazer então a mesma coisa no sprite de defesa:
criar uma variavel (defesa) e substituir pelos sprites correpondentes.
sendo q a defesa é acionado pelo botão D.

darth vader

Número de Mensagens : 85
Data de inscrição : 29/10/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: pulo esquerda e direita

Mensagem por KinKing em Seg 12 Abr 2010, 14:09

Eu também aconselho você a fazer variáveis tanto "direita" quanto "esquerda" para evitar bugs no movimento se as duas teclas forem pressionadas. E você poderia criar um novo execute code no step event só com o código das animações.
Segue um exemplo:

Código:
// sprite defendendo
if (defesa == true)
{
    sprite_index = spr_defendendo;
    break;
}

// sprites no chão
if (gravity == 0)
{
    if (hspeed == 0)
    {
        if (esquerda)
            sprite_index = spr_paradoEsquerda;
        if (direita)
            sprite_index = spr_paradoDireita;
    }
    else
    {
        if (esquerda)
            sprite_index = spr_andandoEsquerda;
        if (direita)
            sprite_index = spr_andandoDireita;
    }
    break;
}

// sprites pulando
if (gravity != 0)
{
    if (esquerda)
        sprite_index = spr_pulandoEsquerda;
    if (direita)
        sprite_index = spr_pulandoDireita;
    break;
}

Note o uso do break no meu código:

Quando ele é rodado no programa. é geralmente num laço (loop) for ou while, e é usado para sair daquele laço.

Mas nesse caso não há laço, então ele sai do Execute Code atual e volta para a sequência no evento (rodaria, por exemplo, o próximo Execute Code daquele evento).

EDIT: Nesse caso eu esqueci da existência do image_xscale, que inverte a imagem para você não precisar de sprites para ambos os lados, então meu código está otimizado para o GM LITE, que não tem essa função disponível...

KinKing

Número de Mensagens : 416
Data de inscrição : 29/05/2008
Reputação : 16
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://felipejoys.webnode.com

Voltar ao Topo Ir em baixo

Re: pulo esquerda e direita

Mensagem por darth vader em Qua 14 Abr 2010, 09:31

Valeu, pessoal. Uma coisa q aprendi é q pra várias ações o bom mesmo é
usar variaveis.
é um grande passo pra mim como iniciante.

fallows!!!!
Sad (me emocionei)

darth vader

Número de Mensagens : 85
Data de inscrição : 29/10/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: pulo esquerda e direita

Mensagem por Conteúdo patrocinado Hoje à(s) 04:05


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum