#IAJ Aula 01 - Movimentação Top Down

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

#IAJ Aula 01 - Movimentação Top Down

Mensagem por Alex FC em Qui 31 Dez 2009, 20:44

INTRODUÇÃO A JOGOS



Aula 01 - Movimentação Top Down



(Atualizado 08/02/2015)

Depois de estudar muito, vamos começar a fazer nosso primeiro jogo. Mas antes de começar realmente, você precisa entender o que é x, o que é y e o que é posição absoluta e posição relativa.

X: é a posição horizontal de algum elemento.

Y: é a posição vertical de algum elemento. OBS: na matemática que nós estudamos quando um elemento esta para cima o y é positivo e quando esta para baixo é negativo. Na computação isso é invertido, em cima é negativo e embaixo é positivo.



Posição absoluta:

A posição absoluta são as posições x e y em relação à room.

Exemplo: vamos criar um objeto na posição x 10 e y 10 na room:

Código:
instance_create(10, 10, obj)

Posição relativa:

A posição relativa é a posição x e y em relação à outro número.

Exemplo: vamos criar um objeto na posição x+10 e y+10 no objeto que o criou:

Código:
instance_create(x+10, y+10, obj)

O x e o y presentes no código são as posições do objeto na room, em que o código foi colocado. Ou seja se o x do objeto na room é 32 é como se fosse 32+10.

Começando a movimentar:

Antes de tudo baixe esta engine:





Guarde essa engine, usaremos ela nas próximas aulas.

Depois de baixar vamos começar a mover nosso player. Vamos ao step do player. Coloque o seguinte código:

Código:
//direita
if keyboard_check(vk_right)
{
sprite_index = direita
if place_free(x+4, y){x += 4}
}

Saiba mais sobre a função place_free, no tutorial abaixo:

Colisões simples

Tradução:

Código:
//direita
se tecla_estiver_sendo_pressionada(tecla_direita)
{
sprite=direita
se estiver_livre_de_colisão_com_sólidos(x+4,y){andará 4 pixels à direita x+=4}
}

- A função keyboard_check, verifica se alguma tecla esta sendo pressionada constantemente.

- A variável local sprite_index, muda a sprite do objeto.

- A função place_free, verifica se tais posições x e y estão livres de colisões com objetos sólidos.

- A variável x guarda a posição horizontal do objeto em relação a room. e usamos a operação matemática de adição para move-lo para direita.

Se entendeu bem como funciona as posições x e y, não será problema fazer as outras movimentações. Então o código final do step será este:

Código:
//direita
if keyboard_check(vk_right)
{
sprite_index=direita
if place_free(x+4,y){x+=4}
}
//esquerda
if keyboard_check(vk_left)
{
sprite_index=esquerda
if place_free(x-4,y){x-=4}
}
//cima
if keyboard_check(vk_up)
{
sprite_index=cima
if place_free(x,y-4){y-=4}
}
//baixo
if keyboard_check(vk_down)
{
sprite_index=baixo
if place_free(x,y+4){y+=4}
}

Engine completa:





Agora entenda algo muito importante, o valor adicionado nas posições x e y é 4, pois ele é múltiplo de 32, que é a grade da room e a largura e altura de seus objetos. Tente mudar todos esse 4 para 5, dificilmente você passará nos cantos estreitos do jogo. Mas porque? Por que as mudanças de posição são como tele transportes, e como ele esta checando sempre o que esta em colisão ele pode parar um pouco antes do previsto. Mude todos esses 4 para 32, que você entenderá melhor o que eu quiz dizer com tele transporte.

Mas aí tu me pergunta: Não poderei usar outros valores além desse múltiplos?

Pode sim. Só teríamos que mudar nosso código usando um loop repeat:

Código:
//direita
if keyboard_check(vk_right)
{
    sprite_index=direita
    
    repeat(7)
    {
        if place_free(x+1,y){x+=1}
    }
}

Repare que mudamos o valor de 4 para 1, logo ele teria velocidade 1. Mas o loop repeat ocorre 7 vezes, então no mesmo frame (step) o repeat faz nossa expressão ocorrer 7 vezes (Ou seja, velocidade vai ser 7). Assim temos uma checagem de colisão perfeita que checa pixel por pixel não importando o número de vezes que ocorra. Isso chama-se pixel perfect.

Mais sobre o loop repeat na aula abaixo:

#IEM Aula 06 - For, do, until e repeat

Até mais!!!

Próxima aula: tiro Top Down



FLWS!


Última edição por Alex FC em Seg 09 Fev 2015, 19:41, editado 21 vez(es) (Razão : Atualização)

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Perfeito! =D

Mensagem por Viitor03 em Ter 29 Mar 2011, 22:34

Ótimoo! xD
na verdade, eu já tinha feito movimentação antes.
Mas tbm testei a movimentação do teu tutorial , e tá excelente! Very Happy
Movimentação é uma coisa mto fácil. Razz

Viitor03

Número de Mensagens : 16
Idade : 17
Data de inscrição : 14/03/2011
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.orkut.com.br/Main#Profile?rl=mp&uid=1309301610595

Voltar ao Topo Ir em baixo

Re: #IAJ Aula 01 - Movimentação Top Down

Mensagem por Geison Barillo em Sex 30 Set 2011, 20:14

Ola senhor
Tentei baixar esta engine mais ao clicar no DOWNLOAD ENGINE apágina não é encontrada.Alguma sujestão?Obrigado

Geison Barillo

Número de Mensagens : 9
Idade : 36
Data de inscrição : 25/09/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http:// geison-gamedesign.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IAJ Aula 01 - Movimentação Top Down

Mensagem por Pit Bull em Sex 30 Set 2011, 20:23

Aqui ta funcionando tranquilo.
copie e cole no navegador
Código:
http://www.fileden.com/files/2009/5/31/2462226/engine_movimenta%C3%A7%C3%A3o_td.gmk

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: #IAJ Aula 01 - Movimentação Top Down

Mensagem por Joton em Sex 30 Set 2011, 20:36

Geison Barillo tome cuidado em postar nos tópicos, veja a data do ultimo post, pois alguns tópicos não podem ser revivido se você não for o autor do mesmo, acarretando perda da sua warning se você continuar revivendo outros tópicos

Em todo o caso, você pode mandar um MP para o dono do tópico.

Sugiro que leias as regras para não cometer infrações que desconheça.

Joton

Ranking : Nota B
Número de Mensagens : 836
Idade : 28
Data de inscrição : 25/07/2010
Notas recebidas : A+B+C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

http://jotonsn.blogspot.com/

Voltar ao Topo Ir em baixo

Re: #IAJ Aula 01 - Movimentação Top Down

Mensagem por Jimkim000 em Qua 07 Dez 2011, 19:04

Y: é a posição vertical de algum elemento. OBS: na matemática que nós estudamos quando um elemento esta para cima o y é positivo e quando esta para baixo é negativo. No Game Maker isso é invertido, encima é positivo e embaixo é negativo.

ih num eh a mesma coisa?
Alias bom tuto!

Jimkim000

Número de Mensagens : 103
Idade : 18
Data de inscrição : 25/07/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: #IAJ Aula 01 - Movimentação Top Down

Mensagem por Alex FC em Sab 20 Out 2012, 23:33

Aula atualizada - 20/10/12:

- Melhora na grafia e explicação;
- Atualização das engines.

Ps: As próximas aulas serão atualizadas em breve.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: #IAJ Aula 01 - Movimentação Top Down

Mensagem por manobrother em Ter 25 Fev 2014, 17:04

Tem algum comando ou de alguma forma proibir o comando de uma tecla? Por exemplo, eu quero que quando eu clicar no "V" não possa clicar no "W", alguém entendeu? Se entendeu sabe como?

manobrother

Número de Mensagens : 206
Idade : 17
Data de inscrição : 31/10/2013
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: #IAJ Aula 01 - Movimentação Top Down

Mensagem por WellingtonBecker em Ter 25 Fev 2014, 20:07

Amigo, use true e false. Excelente para esses casos.

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: #IAJ Aula 01 - Movimentação Top Down

Mensagem por Conteúdo patrocinado Hoje à(s) 00:15


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