Conectar-se
Quem está conectado
27 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 27 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 19/03/2008
Número de Mensagens : 267
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Aula 7 - Levante e ande

em Sex 13 Fev 2009, 15:47
Galera. Nesta aula começaremos a montar nosso jogo RPG, mas iremos montar um jogo plataforma também então será um jogo plataforma RPG, terá as características de um jogo RPG, mas seu campo será no estilo plataforma com isso consigo fazer duas coisas de uma só vez, explicar sobre gravidade e também ficha RPG em seu jogo.

Mas primeiro vamos montar um projeto novo e adicionar novas sprites, mas para economizar tempo já comecei um novo projeto e já adicionei os sprites que iremos usar com os nomes corretos e também com o obj_player já criado. Baixe ele para usarmos em nossa aula.

rapidshare.com aula7_base.gmk.html

ou

mediafire.com download.php?wyntno3j1zu

Você deve ter recebido o seguinte:
13 sprites
1 script
1 obj
1 room

Bom como iremos montar bastantes coisas iremos fazer um planejamento.

Para tanto iremos focar em uma meta e regras:

Meta: configurar a movimentação do nosso personagem.

Regras:
1º movimentação será feita com as setas do teclado.

2º seta direta anda para direita, seta esquerda anda para esquerda, seta baixo abaixa, seta cima pula.

3º ataque será no espaço e enquanto estiver atacando não ira andar, abaixar e pular.

4º se estiver abaixando ou pulando não ira atacar.

5º se abaixado na ira andar.

6º se pulando não ira abaixar.

7º quando pulando se estiver apertado subira normal, mas se soltar o botão terá de perder metade de sua velocidade na subida.

Bom após analisar nossas regras pode se chegar à seguinte conclusão:

Temos duas direções e cinco situações:

Duas direções: esquerda e direita.

Cinco situações: abaixado andando pulando atacando e parado.

Mas podemos fazer duas eliminações.

As direções são uma o contrario da outra então não precisamos configurar as duas tendo uma automaticamente já teremos a outra e só ter a primeira negado ou false,

Nas situações temos cinco, mas a parada e quando nem uma das outras estão sendo realizadas então não precisaremos configurá-la.

Bom, concluímos então que iremos criar cinco vars:

direita = true
pe_no_chao = false
andando = false
abaixado = false
atacando = false

Chega de tanta explicação vamos logo ao o que interessa vamos programar. Crie um evento create e nele coloque todas as vars que a cima foram criadas e também a adicione o seguinte comando.

Código:
image_speed = 0.25

Isso fará com que a imagem de nosso player fique mais divagar sem isso os sprites passariam muito rápido e não daria um bom efeito.

Agora crie um evento step e nele um execute code.

Iremos começar montando o movimento na vertical.

Código:
if (keyboard_check(vk_right)){//verifica se a seta direita foi apertada
    hspeed = 5;direita = true;andando = true
}else{// se não foi
    if (keyboard_check(vk_left)){ //verifica se a seta esquerda foi apertada
        hspeed = -5;direita = false;andando = true
    }else{// se não foi
        hspeed = 0;andando = false
    }
}

Agora se testarmos o jogo iremos ver que o obj muda de lugar, mas porque seu sprite não muda? É porque ainda não o fizemos mudar. Para tanto iremos criar nosso script de troca de sprite, coloque um novo execute code no evento step e nele coloque o seguinte script:

Código:
if direita = true {// se para direita
    if andando = true{//se estiver andando
        sprite_index = spr_dir_and
    }else{//se não estiver andando
        sprite_index = spr_dir_par
    }
}else{//se não estiver para direta (para esquerda)
    if andando = true{//se estiver andando
        sprite_index = spr_esq_and
    }else{//se não estiver andando
        sprite_index = spr_esq_par
    }
}

Teste e veja como ficou o obj agora ele troca de sprite quando anda.

Para o fazer abaixar será fácil agora para isso e só adicionar logo a baixo de nosso script de movimentação o seguinte script:

Código:
if keyboard_check(vk_down){//se for apertado para baixo
    abaixado = true
}else{//se não for
    abaixado = false
}

Agora vamos modificar nosso scipt de troca de sprite para adicionarmos nosso sprite abaixado lembrasse de que se eu estiver abaixado ele não andara então abaixado tem prioridade sobre o sprite andando, com isso nosso script ficara assim:

Código:
if direita = true {// se para direita
    if abaixado = true{//se estiver baixo
        sprite_index = spr_dir_aba
    }else{//se não estiver para baixo
        if andando = true{//se estiver andando
            sprite_index = spr_dir_and
        }else{//se não estiver andando
            sprite_index = spr_dir_par
        }
    }
}else{//se não estiver para direta (para esquerda)
    if abaixado = true{//se estiver baixo
        sprite_index = spr_esq_aba
    }else{//se não estiver para baixo
        if andando = true{//se estiver andando
            sprite_index = spr_esq_and
        }else{//se não estiver andando
            sprite_index = spr_esq_par
        }
    }
}

Teste seu jogo e tente andar enquanto estiver abaixado se você notou que conseguiu então não notou errado porque não colocamos o travamento ainda no movimento se abaixado for confirmado. E para fazer isso faremos assim:

Código:
if (keyboard_check(vk_right) and abaixado = false){//verifica se a seta direita foi apertada e não esta abaixado
    hspeed = 5;direita = true;andando = true
}else{// se não foi
    if (keyboard_check(vk_left) and abaixado = false){ //verifica se a seta esquerda foi apertada e não esta abaixado
        hspeed = -5;direita = false ;andando = true
    }else{// se não foi
        hspeed = 0;andando = false
    }
}

Pronto agora ele não andará se estiver abaixado.

Agora vamos fazer o ataque coloque o seguinte script no evento step do player.

Código:
if (keyboard_check_pressed(vk_space) and atacando = false and abaixado = false){// verifica se o espaço foi apertado e não se esta atacando e não esta abaixado
    image_index = 0
    atacando = true
    alarm[0] = 11
}

Mas porque no ataque tem de verificar que eu não estou atacando? Porque se não fosse verificado você poderia mandar vários ataques um em seguida do outro sem esperar o anterior acabar.

Agora adicione um evento alam0 e nele coloque o script:

Código:
atacando = false

E antes de testar lembre que quando estiver atacando não se pode andar. Então modifiquemos o script de movimentação:

Código:
if (keyboard_check(vk_right) and abaixado = false and atacando = false){//verifica se a seta direita foi apertada e não esta abaixado e não esta atacando
    hspeed = 5;direita = true;andando = true
}else{// se não foi
    if (keyboard_check(vk_left) and abaixado = false and atacando = false){ //verifica se a seta esquerda foi apertada e não esta abaixado e não esta atacando
        hspeed = -5;direita = false ;andando = true
    }else{// se não foi
        hspeed = 0;andando = false
    }
}

E também não se esqueça de mudar o sprite de mudança de sprite:

Código:
if direita = true {//se para direita
    if abaixado = true{//se estiver baixo
        sprite_index = spr_dir_aba
    }else{//se não estiver para baixo
        if atacando = true{//se estiver atacando
            sprite_index = spr_dir_ata
        }else{//se não estiver atacando
            if andando = true{//se estiver andando
                sprite_index = spr_dir_and
            }else{//se não estiver andando
                sprite_index = spr_dir_par
            }
        }
    }
}else{//se não estiver para direta (para esquerda)
    if abaixado = true{//se estiver baixo
        sprite_index = spr_esq_aba
    }else{//se não estiver para baixo
        if atacando = true{//se estiver atacando
            sprite_index = spr_esq_ata
        }else{//se não tiver atacando
            if andando = true{//se estiver andando
                sprite_index = spr_esq_and
            }else{//se não estiver andando
                sprite_index = spr_esq_par
            }
        }
    }
}

Agora nossa personagem já faz bastantes coisas, mas falta agora pular.

Mas antes de configurar o sprite iremos configurar a gravidade adicione um novo execute code junto com os scripts de movimentação e de troca de sprite.

E nele coloque o seguinte script.

Código:
gravidade(obj_player,0.75, pe_no_chao)

Agora se testarmos o jogo o nosso personagem ira cair, cair e cair. Então agora é a hora de criarmos um chão para nosso personagem andar.

Crie um novo obj e nomeio de obj_chao coloque o sprite spr_chao nele e o coloque em seu campo desta maneira.



Bom se você testar agora ainda não vai dar certo. Por quê? Por que ela ainda não para no chão, e para ela parar teremos de adicionar o seguinte evento em nosso player:

Collision / obj_chao

E nele coloque o seguinte script:

Código:
move_contact_solid(direction,10)
vspeed = 0
pe_no_chao = true

Nesse script tem um comando que é muito útil e que é uma mão na roda e ele é o move_contact_solid. Esse comando move o obj ate encostar-se no obj solido e não ultrapassando evitando assim bugs, mas irei explicado mais detalhadamente numa próxima oportunidade.

Após tudo isso, acredito que esta faltando apenas um detalhe que é pequeno, mas ainda não ira dar certo se não for feito. Abra o obj_chao e nele marque a opção Solid para se tornar um obj solido e assim puder para nele como o script a cima esta pedindo.

Mas agora que ele já esta caindo certinho temos que o fazer subindo ou pulando.

Em nosso script de movimentação colocaremos mais esse script a baixo dos outro.

Código:
if keyboard_check_pressed(vk_up) and pe_no_chao = true and abaixado = false{//se for apertado para cima
    vspeed = -12
    pe_no_chao = false
}

Mas lembre que se soltarmos o botão tem de diminuir a velocidade pela metade. Para isso também adicione o seguinte script:

Código:
if keyboard_check_released(vk_up) and vspeed <= 0{//se for soltado para cima
    vspeed /= 2
}

Já estamos pulando agora só falta mudar nossa sprite, mas como eu já não sei quem tem privilegio sobre quem então simplesmente adicionem neste local.

Código:
if direita = true {//se para direita
    if pe_no_chao = false{//se estiver pulando
        if vspeed <= 0{//se estiver subindo
            sprite_index = spr_dir_pul_sub
        }else{//se estiver caindo
            sprite_index = spr_dir_pul_cai
        }
    }else{//se nao estiver pulando
        if abaixado = true{//se estiver baixo
            sprite_index = spr_dir_aba
        }else{//se não estiver para baixo
            if atacando = true{//se estiver atacando
                sprite_index = spr_dir_ata
            }else{//se não estiver atacando
                if andando = true{//se estiver andando
                    sprite_index = spr_dir_and
                }else{//se não estiver andando
                    sprite_index = spr_dir_par
                }
            }
        }
    }
}else{//se não estiver para direta (para esquerda)
    if pe_no_chao = false{//se estiver pulando
        if vspeed <= 0{//se estiver subindo
            sprite_index = spr_esq_pul_sub
        }else{//se estiver caindo
            sprite_index = spr_esq_pul_cai
        }
    }else{//se nao estiver pulando
        if abaixado = true{//se estiver baixo
            sprite_index = spr_esq_aba
        }else{//se não estiver para baixo
            if atacando = true{//se estiver atacando
                sprite_index = spr_esq_ata
            }else{//se não tiver atacando
                if andando = true{//se estiver andando
                    sprite_index = spr_esq_and
                }else{//se não estiver andando
                    sprite_index = spr_esq_par
                }
            }
        }
    }
}

Acho que já esta bem grande nosso script de troca de sprite. Mas não serão necessárias mais modificações.

Então vamos ver como tem de ficarem os outros scripts.

Create:

Código:
direita = true
pe_no_chao = false
andando = false
abaixado = false
atacando = false

image_speed = 0.25

alarm0:

Código:
atacando = false

Step:
1º código


Código:
gravidade(obj_player,0.75,pe_no_chao)

2º código

Código:
//movimentasao
if (keyboard_check(vk_right) and abaixado = false and atacando = false){//verifica se a seta direita foi apertada e não esta abaixado e não esta atacando
    hspeed = 5;direita = true;andando = true
}else{// se não foi
    if (keyboard_check(vk_left) and abaixado = false and atacando = false){ //verifica se a seta esquerda foi apertada e não esta abaixado e não esta atacando
        hspeed = -5;direita = false ;andando = true
    }else{// se não foi
        hspeed = 0;andando = false
    }
}

//abaixando
if keyboard_check(vk_down){//se for apertado para baixo
    abaixado = true
}else{//se não for
    abaixado = false
}

//atacando
if (keyboard_check(vk_space) and atacando = false and abaixado = false){// verifica se o espaço foi apertado e não se esta atacando e não esta abaixado
    image_index = 0
    atacando = true
    alarm[0] = 11
}

//pulando
if keyboard_check_pressed(vk_up) and pe_no_chao = true and abaixado = false{//se for apertado para cima
    vspeed = -12
    pe_no_chao = false
}
if keyboard_check_released(vk_up) and vspeed <= 0{//se for apertado para cima
    vspeed /= 2
}

3º código

É o de troca de sprite e já foi colocado mais para cima.

Collision:

Código:
move_contact_solid(direction,10)
vspeed = 0
pe_no_chao = true

Galera. Chegamos ao fim de mais uma aula e para facilitar coloquei uma demo desta aula aqui pelo rapidshare ou aqui pelo mediafire.

Na próxima aula iremos fazer o esquema de ataque e talvez mais alguma coisa.

tutorial feito por RedDragon


Última edição por reddragon em Seg 02 Mar 2009, 21:41, editado 2 vez(es)
avatar
Ranking : Nota A
Notas recebidas : A - A
Data de inscrição : 15/02/2009
Número de Mensagens : 1479
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 9

Prêmios
   : 1
   : 0
   : 1
Ver perfil do usuáriohttp://www.indiegamebr.com

Re: Aula 7 - Levante e ande

em Dom 15 Fev 2009, 00:29
Finalmente eu consegui fazer uma bolinha pular plataformas!!!! devo isso a vc cara!!! to esperando outras aulas!!! vc é o cara!!!!
avatar
Data de inscrição : 27/12/2008
Número de Mensagens : 265
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 21 Fev 2009, 00:19
TA DANDO ESSA PROBLEMA!!!

This file is neither allocated to a Premium Account, or a Collector's Account, and can therefore only be downloaded 10 times.

This limit is reached.

To download this file, the uploader either needs to transfer this file into his/her Collector's Account, or upload the file again. The file can later be moved to a Collector's Account. The uploader just needs to click the delete link of the file to get further information.


Tem como Colocar em Outro Server?

Tipo essa:

http://www.zshare.net/
avatar
Data de inscrição : 19/03/2008
Número de Mensagens : 267
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 21 Fev 2009, 08:12
Dark-Yes em casa o linque funcionou mas eu irei colocar em outro servidor.
avatar
Data de inscrição : 27/12/2008
Número de Mensagens : 265
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 21 Fev 2009, 13:42
Vlw's Vei....

Media Fire Melhor Ainda
avatar
Data de inscrição : 27/09/2008
Número de Mensagens : 82
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sex 06 Mar 2009, 18:19
eaew gostei da aula mas será q tinha como fazer sem script ?
é q eu num entendo
e outra coisa será q alguem tem alguma aula de rpg dakeles de visão de cima para baixo q nem a do pokemon ?

abração
avatar
Data de inscrição : 01/03/2009
Número de Mensagens : 67
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 07 Mar 2009, 01:10
ai kra eu queria saber como vc faz o personagem se mexer sem fazer nd tp qndo vc ta pardo sabe ele fica fazendo um movimento poderia me passar o script ou me explicar normalmente(eu preferiria mais esse)

Obrigado
avatar
Data de inscrição : 11/12/2008
Número de Mensagens : 121
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 07 Mar 2009, 10:14
sao animaçoes, igual a do personagem andando, so q ai e dele parado
avatar
Data de inscrição : 01/03/2009
Número de Mensagens : 67
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 07 Mar 2009, 11:20
é so q vc ver ali ele n bota mais de um sprite e alen disso como fas ele trocar sem vc fazer nd?
avatar
Data de inscrição : 11/12/2008
Número de Mensagens : 121
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 07 Mar 2009, 11:34
entra na primeira sprite vai no edit sprite
tem 6 imagens la
depois clique no show preview, vai ver uma animaçao Happy
avatar
Data de inscrição : 01/03/2009
Número de Mensagens : 67
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 07 Mar 2009, 12:00
vlw mesmo
avatar
Data de inscrição : 01/03/2009
Número de Mensagens : 67
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 07 Mar 2009, 14:45
poderia me explicar pq qndo eu boto as animasoes (o mesmo numero q o reddragon pos na aula dele) do meu boneco andando ele para ,anda ,para ,anda... e assim vai eu queria q ele fisesse q nem o da aula direto andando poderia me ajudar

Obrigado
avatar
Data de inscrição : 11/12/2008
Número de Mensagens : 121
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 07 Mar 2009, 15:09
nao entendi muito bem mas acho q e isso:

direita = true
pe_no_chao = false
andando = false
abaixado = false
atacando = false

Chega de tanta explicação vamos logo ao o que interessa vamos programar. Crie um evento create e nele coloque todas as vars que a cima foram criadas e também a adicione o seguinte comando.

Código:
image_speed = 0.25


Isso fará com que a imagem de nosso player fique mais divagar sem isso os sprites passariam muito rápido e não daria um bom efeito.

Agora crie um evento step e nele um execute code.

Iremos começar montando o movimento na vertical.

Código:
if (keyboard_check(vk_right)){//verifica se a seta direita foi apertada
hspeed = 5;direita = true;andando = true
}else{// se não foi
if (keyboard_check(vk_left)){ //verifica se a seta esquerda foi apertada
hspeed = -5;direita = false;andando = true
}else{// se não foi
hspeed = 0;andando = false
}
}


Agora se testarmos o jogo iremos ver que o obj muda de lugar, mas porque seu sprite não muda? É porque ainda não o fizemos mudar. Para tanto iremos criar nosso script de troca de sprite, coloque um novo execute code no evento step e nele coloque o seguinte script:

Código:
if direita = true {// se para direita
if andando = true{//se estiver andando
sprite_index = spr_dir_and
}else{//se não estiver andando
sprite_index = spr_dir_par
}
}else{//se não estiver para direta (para esquerda)
if andando = true{//se estiver andando
sprite_index = spr_esq_and
}else{//se não estiver andando
sprite_index = spr_esq_par
}
}

se nao for me pergunte por mp ou por aqui msm .......... sei la
Data de inscrição : 03/10/2008
Número de Mensagens : 70
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 25 Abr 2009, 19:11
Da uma upada ae =D
avatar
Data de inscrição : 21/02/2009
Número de Mensagens : 669
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 25 Abr 2009, 22:42
pedrok11 escreveu:Da uma upada ae =D

Aff ta vendo a data do ultimo post nesse topico?07 março...
ainda tem a kra de pau de falar "da uma upada ai"-.-"
GoodaBay

~DoidoBr
Data de inscrição : 03/10/2008
Número de Mensagens : 70
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Dom 26 Abr 2009, 21:49
doidobr escreveu:
pedrok11 escreveu:Da uma upada ae =D

Aff ta vendo a data do ultimo post nesse topico?07 março...
ainda tem a kra de pau de falar "da uma upada ai"-.-"
GoodaBay

~DoidoBr
Até agora vc naum me falou nada u.u'
avatar
Data de inscrição : 14/02/2009
Número de Mensagens : 152
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 18 Jul 2009, 14:09
como faço pra mudar a tecla de pulo pela letra c ? eu to usando esse código e ta dando erro if keyboard_check_pressed(ord("LETRA"));
avatar
Ranking : Nota A
Notas recebidas : A+A+A+A+A+A+A
Data de inscrição : 06/06/2009
Número de Mensagens : 2264
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 39

Prêmios
   : 4
   : 2
   : 1
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Sab 18 Jul 2009, 15:12
kara olha a data do último post,cuidado com isso...
e quanto a pergunta eu n sei t responde pq eu tenho essa msm dúvida... :|
avatar
Data de inscrição : 26/07/2009
Número de Mensagens : 8
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Dom 26 Jul 2009, 23:00
vlw cara mto bom esse tuto me ajudou pacas
avatar
Data de inscrição : 11/08/2008
Número de Mensagens : 1121
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 3

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Aula 7 - Levante e ande

em Seg 27 Jul 2009, 14:40
cara isso é meio flood porque esse tópico foi revivido um cara levo a bronca e vc naum quer levar? para revival não é de topico antigo e sim topico morto
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum