Sei sulla pagina 1di 19

Parte 1 Movendo-se no Cenrio Parte 1 Movendo- no Cen Movendo-se Cenrio 2006 - PUCPR Tutoria de Jogos 1 Ano 2006 - PUCPR

UCPR Tutoria de Jogos 1 Ano

Lgica de Jogos Lgica


Paulo V. W. Radtke
pvwradtke@gmail.com http://www.ppgia.pucpr.br/~radtke/jogos

Contedo
Coordenadas de mapa Centrando a ao no jogador Deslocamento e Gravidade Representando um elemento no cenrio

Coordenadas de mapa
Um jogo trabalha com dois sistemas de coordenadas:
Coordenadas da tela: fsico Coordenadas de mapa: lgico

Coordenadas de mapa
As coordenadas da tela so ditas fsicas por representarem pontos mostrados na tela. Possuem valores fixo, variando de 0 a um valor mximo (ex: 639).

Coordenadas de mapa
J as coordenadas do mapa so ditas lgicas por representarem o mundo do jogo. Isto ocorre devido ao mapa do jogo ser maior do que possvel de ser mostrado na tela.

Coordenadas de mapa
Assim, a ao do jogo passa-se nas coordenadas do mapa. O que o jogo faz mostrar na tela a projeo de parte do mapa. Normalmente, esta projeo centrada no jogador.

Projeo do Mapa na Tela - Caso Geral


Mapa: 0,0 Origem da tela

Mapa: xmax, ymax Jogador: coordenadas x,y dentro do mapa

Projeo do Mapa na Tela - Caso Geral


Neste caso, o jogador fica centralizado na tela. Tanto o jogador como inimigos possuem uma posio x,y dentro do mapa. Com a posio x,y do jogador e as dimenses do mapa, calculamos a origem da tela em coordenadas do mapa.

Projeo do Mapa na Tela - Caso Geral


Desta forma, precisamos conhecer as seguintes variveis:
x,y: coordenadas do jogador no mapa xmax, ymax: dimenses do mapa. xtela, ytela: dimenses da tela. ljog, ajog: a largura e altura do jogador em pontos.

Projeo do Mapa na Tela - Caso Geral


Conhecendo estes valores, podemos calcular xorig e yorig, a origem da tela no mapa. Tais valores so fixos durante o jogo e conhecidos pelo programador.

Projeo do Mapa na Tela - Caso Geral


Assim, temos que:
xorig = xjog + ljog xtela ljog xtela = xjog + 2 2 2

yorig = yjog +

ajog ytela ajog ytela = yjog + 2 2 2

Projeo do Mapa na Tela - Caso Geral


O mapa ento desenhado na tela com a origem em xorig e yorig. Com a Chien2DMapy, basta passar estes valores como coordenadas de mapa.

Projeo do Mapa na Tela - Caso Geral


Para desenhar os elementos na tela (jogador, inimigos, etc), basta subtrair o valor de xorig e yorig das coordenadas x,y do elemento.

x' = x xorig y ' = y yorig

Projeo do Mapa na Tela - Caso Especial


Mapa: 0,0

Mapa: xmax, ymax

Projeo do Mapa na Tela - Caso Especial


Mapa: 0,0

Mapa: xmax, ymax

Projeo do Mapa na Tela - Caso Especial


Os casos especias ocorrem nos cantos do mapa. Nestes casos, xorig e yorig so calculados de maneira diferente para que no se tente desenhar fora do mapa.

Projeo do Mapa na Tela - Caso Especial


As condies para que estejamos em um caso especial devem ser verificadas INDEPENDENTEMENTE para cada eixo. Assim, possvel que no eixo x estejamos em um caso especial, mas no no eixo y.

Projeo do Mapa na Tela - Caso Especial


Para o eixo x:
Se o xorig calculado for menor que 0, ento xorig deve ser associado a 0. Se por outro lado o xorig for maior que xmapa, ento xorig=xmapa-xtela. Caso contrrio, mantm-se o xorig calculado.

Projeo do Mapa na Tela - Caso Especial


Para o eixo y fazemos o mesmo:
Se o yorig calculado for menor que 0, ento yorig deve ser associado a 0. Se por outro lado o yorig for maior que ymapa, ento yorig=ymapa-ytela. Caso contrrio, mantm-se o yorig calculado.

Projeo do Mapa na Tela - Caso Especial


Obviamente, os elementos (jogador, inimigos, etc) devem, obrigatoriamente, verificar se eles saem do mapa ao se deslocar.

10

Deslocando-se no Mapa
Para um elemento deslocar-se no mapa, este precisa conhecer algumas informaes:
As suas dimenses. A sua coordenada de referncia dentro do sprite original (caso este no cubra o sprite inteiro).

Deslocando-se no Mapa
Como exemplo, vamos fazer este personagem deslocar-se no cenrio:

28 pixels 40 pixels

11

Deslocando-se no Mapa
Ao deslocar o elemento no mapa, testamos se o mesmo no colide com o cenrio, baseado no seu boundingbox. O bounding-box o retngulo que envolve o elemento, que neste caso, tem 28x40 pixels.

Deslocando-se no Mapa
O tileset utilizado para desenhar o mapa era o seguinte:

12

Deslocando-se no Mapa
Porm, apenas dois blocos so ativos, nos quais o jogador pode andar ou colidir:

Deslocando-se no Mapa
Estes blocos possuem os cdigo 1 e 2. Para deslocar o jogador, basta testar se o seu bounding box colide com o bounding box de um destes blocos no cenrio. Para recuperar os blocos para um vetor de blocos, temos o mtodo copiaCamadaMapa da Chien2DMappy.

13

Deslocando-se no Mapa
Para representar este personagem, precisamos de dois sprites 32x32. Assim, o ponto de referncia ser um pixel dentro dos sprites.
Ponto de referncia

Deslocando-se no Mapa
Tendo o mapa podemos calcular a posio dos blocos e verificarmos a interseco do bounding box dos blocos cobertos pelo elemento com o elemento em si.

14

Deslocando-se no Mapa

Deslocando-se no Mapa
A maneira mais simples de realizar o movimento testar se o jogador pode, ou no, se posicionar na prxima posio calculada. Se puder, o jogador tem sua posio mudada, dando a impresso de movimento.

15

Gravidade
Em alguns casos, como em jogos side-view, faz-se necessrio a simulao de gravidade. Assim, quando um jogador pula (ganha velocidade), ele trazido para baixo automaticamente pelo jogo. O mesmo ocorre quando ele cai em buracos.

Gravidade
O processo segue a frmula clssica de fsica para o clculo da velocidade, aonde a a acelerao e t o tempo passado:

v = at

16

Gravidade
Esta equao calcula a acelerao de um corpo em queda livre. Ela serve tanto para calcular a velocidade da queda como para reduzir a velocidade de um elemento ao dar-se o impulso para um pulo.

Gravidade
Assim, precisamos de duas informaes para aplicarmos a gravidade em um elemento:
A velocidade inicial dele. O tempo passado na ao.

Para simularmos o atrito do ar, limitamos a velocidade mxima do elemento.

17

Representando um Elemento
Para representarmos um elemento, utilizaremos uma estrutura de dados com diversas informaes. Estas informaes so usadas tanto para calcular o deslocamento do personagem como para simular a gravidade.

Representando um Elemento
Dados do elemento:
x,y: posio do ponto de referncia do elemento no mapa. lele, aele: largura e altura do elemento em pixels. tempo: tempo passado desde o incio da queda. vini: velocidade inicial da queda/pulo.

18

Prxima Aula
Na prxima aula, veremos um exemplo incremental que:
1. 2. 3. 4. Posiciona um elemento no cenrio. Testa coliso. Simula a gravidade. Encera a partida ao chegar no final do cenrio. 5. Controla a animao.

19

Potrebbero piacerti anche