3D Parte 5
Página 1 de 1
3D Parte 5
Créditos:
psycon:Por traduzir o tutorial para o pôrtugues.
dodoop:Por disponibilizar.
Tutorial:
Plataformas
O que você aprenderá: criar um jogo de plataforma 3D.
1.1. Introduction
O que você aprenderá:
· Sobre jogos de plataforma,
· Usando gravidade,
· Designando niveis simples,
· Usando a visao de terceira pessoa,
· Animaçao através de deformação,
· Fazendo o personagem caminhar, pular, e cair.
1.2. Sobre jogos de plataforma
Nos tutorials anteriores vimos como declarar o valor de z e usar isso interativamente. Usamos algo como:
A Altura faz um papel crucial em tal jogo.
Nao faz muito sentido quando temos um jogo de plataforma sem alturas/niveis diferentes.
Se nao tem diferença de altura num jogo de plataforma, haverá só um fino pavimento(chao).
Temos aqui pontos onde você pode cair pela plataforma em sua profundidade ou algum caminho para subir pelas plataformas.
Se você tem um personagem que caminha em uma plataforma, ele terá que poder cair ou salta sobre outras plataformas.
A subida e caida é expressada pelo valor de z.
1.3. Usando gravidade
A força da gravidade é o que faz o jogo de plataforma trabalhar. Sem gravidade você teria um personagem que poderia andar em meio ao ar.
Até mesmo em desenhos animados onde o personagem pode caminhar para fora de um precipício com nada mais do que espaço em baixo dele,
ele eventualmente caira, até mesmo se ele tentar correr atrás do chão sólido.
Para nosso tutorial, temos duas texturas: uma superficie de metal e uma superficie de agua,
porque isso realmente é tudo que precisamos.
Quereremos que o personagem ande nas plataformas de metal e caia na superfície de água.
Nosso personagem será alérgico a água (mas nao ao metal).
No mundo real, a gravidade puxa todo o tempo. No mundo virtual do jogo de plataforma, a gravidade pode ser ligada e desligada.
Usamos isso para desligar a gravidade quando o personagem esta na plataforma sólida e liga-la quando não estiver.
No parágrafo 1.7 deste texto tutorial vc ve que a gravidade é usada para fazer o personagem andar, correr, pular, aterrisar e cair.
1.4. Designando niveis simples
Para simplificar criaremos plataformas simples, sobrepondo outras(umas sobre as outras). Sobrepondo plataformas pode-se caminhar em cima e ficar de debaixo delas.
Plataformas simples estao lado a lado(azulejo) mas em alturas diferentes.
Precisamos desenhar um nível/fase no Editor de Room do GM para colocar plataformas a diferente locais e alturas.
Para realizar isto, nós usaremos marcadores de altura que nós vamos colocar no layout da room de plataforma.
Por esse meio poderemos designar os niveis, ambos em plano e em altura (ou profundidade).
Os marcadores de altura colocados, desígnam os niveis da plataforma simples.
Se você der uma olhada no arquivo gm6 no script scr_Marker, vc vera que para
cada segmento da plataforma que nós nomeamos para um valor de z:
Os azulejos atuais são desenhados no Draw event do objeto par_Child. (Parent-child metodo que foi usado no exemplo.)
Aqui o codigo para desenhar os azulejos que vc ve:
entao colocanado os marcadores de altura e então finalmente a camera object (que cria o personagem, a proposito)na room.
------------------------------------------
1.5. Usando a visao de terceira pessoa
Claro, precisaremos duma camera para olhar a tela. Esse é o codigo da camera que se segue:
Seno (e coseno) foram usados com o especifico proposito para girar a camera de tal modo que ficasse atrás do personagem.
A camera olha para a posição do objeto (xt,yt,zt). Finalmente, a projeção é mostrada como você esperaria (na ultima linha de codigo).
----------------------------------------
1.6. Animaçao através de deformação
Uma simples animaçao de pulo foi usada para mostrar ao jogador quando nós pulamos ou caimos ou quando nao.
A bola vermelha que é o personagem principal é deformada baseada em sua velocidade.
O codigo fala por si mesmo:
1.7. Fazendo o personagem caminhar, pular, aterrisar e cair
O codigo que se trata de andar, pular, aterrisar e cair do personagem é bastante complicado.
Envolve bastante de lógica. No Step event do character(obj_Character) encontramos o script scr_Gravity.
Isso basicamente checa se o character esta sobre a plataforma ou nao. Olhe isso:
Isso fara o personagem aterrisar na plataforma.
Um final script que mensionarei é o script de pulo (encontrado no evento ao apertar espaço do obj_Character)
nomeado: scr_Jump. Seguindo o codigo:
esta exatamente na plataforma ou nao, fazendo o character pular.
***
psycon:Por traduzir o tutorial para o pôrtugues.
dodoop:Por disponibilizar.
Tutorial:
Plataformas
O que você aprenderá: criar um jogo de plataforma 3D.
1.1. Introduction
O que você aprenderá:
· Sobre jogos de plataforma,
· Usando gravidade,
· Designando niveis simples,
· Usando a visao de terceira pessoa,
· Animaçao através de deformação,
· Fazendo o personagem caminhar, pular, e cair.
1.2. Sobre jogos de plataforma
Nos tutorials anteriores vimos como declarar o valor de z e usar isso interativamente. Usamos algo como:
- Código:
//set speed
if z>0 then speed*=.99;
A Altura faz um papel crucial em tal jogo.
Nao faz muito sentido quando temos um jogo de plataforma sem alturas/niveis diferentes.
Se nao tem diferença de altura num jogo de plataforma, haverá só um fino pavimento(chao).
Temos aqui pontos onde você pode cair pela plataforma em sua profundidade ou algum caminho para subir pelas plataformas.
Se você tem um personagem que caminha em uma plataforma, ele terá que poder cair ou salta sobre outras plataformas.
A subida e caida é expressada pelo valor de z.
1.3. Usando gravidade
A força da gravidade é o que faz o jogo de plataforma trabalhar. Sem gravidade você teria um personagem que poderia andar em meio ao ar.
Até mesmo em desenhos animados onde o personagem pode caminhar para fora de um precipício com nada mais do que espaço em baixo dele,
ele eventualmente caira, até mesmo se ele tentar correr atrás do chão sólido.
Para nosso tutorial, temos duas texturas: uma superficie de metal e uma superficie de agua,
porque isso realmente é tudo que precisamos.
Quereremos que o personagem ande nas plataformas de metal e caia na superfície de água.
Nosso personagem será alérgico a água (mas nao ao metal).
No mundo real, a gravidade puxa todo o tempo. No mundo virtual do jogo de plataforma, a gravidade pode ser ligada e desligada.
Usamos isso para desligar a gravidade quando o personagem esta na plataforma sólida e liga-la quando não estiver.
No parágrafo 1.7 deste texto tutorial vc ve que a gravidade é usada para fazer o personagem andar, correr, pular, aterrisar e cair.
1.4. Designando niveis simples
Para simplificar criaremos plataformas simples, sobrepondo outras(umas sobre as outras). Sobrepondo plataformas pode-se caminhar em cima e ficar de debaixo delas.
Plataformas simples estao lado a lado(azulejo) mas em alturas diferentes.
Precisamos desenhar um nível/fase no Editor de Room do GM para colocar plataformas a diferente locais e alturas.
Para realizar isto, nós usaremos marcadores de altura que nós vamos colocar no layout da room de plataforma.
Por esse meio poderemos designar os niveis, ambos em plano e em altura (ou profundidade).
Os marcadores de altura colocados, desígnam os niveis da plataforma simples.
Se você der uma olhada no arquivo gm6 no script scr_Marker, vc vera que para
cada segmento da plataforma que nós nomeamos para um valor de z:
- Código:
//make the height
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height0,false,false) then
z=0*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height1,false,false) then
z=1*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height2,false,false) then
z=2*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height3,false,false) then
z=3*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height4,false,false) then
z=4*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height5,false,false) then
z=5*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height6,false,false) then
z=6*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height7,false,false) then
z=7*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height8,false,false) then
z=8*global.Grid;
else
if collision_rectangle(x-32,y-32,x+32,y+32,obj_Height9,false,false) then
z=9*global.Grid;
Os azulejos atuais são desenhados no Draw event do objeto par_Child. (Parent-child metodo que foi usado no exemplo.)
Aqui o codigo para desenhar os azulejos que vc ve:
- Código:
//draw a platform tile
d3d_draw_block(x-32,y-32,z-8,x+32,y+32,z,background_get_texture(bac_Metal),1,1);
entao colocanado os marcadores de altura e então finalmente a camera object (que cria o personagem, a proposito)na room.
------------------------------------------
1.5. Usando a visao de terceira pessoa
Claro, precisaremos duma camera para olhar a tela. Esse é o codigo da camera que se segue:
- Código:
//draw what camera sees
//from x,y,z
xf=obj_Character.x-sin(degtorad(-obj_Character.direction+90))*global.Zoom
yf=obj_Character.y+cos(degtorad(-obj_Character.direction+90))*global.Zoom
zf=obj_Character.z+global.Zoom
//to x,y,z
xt=obj_Character.x
yt=obj_Character.y
zt=obj_Character.z
d3d_set_projection(xf,yf,zf, xt,yt,zt, 0,0,1);
Seno (e coseno) foram usados com o especifico proposito para girar a camera de tal modo que ficasse atrás do personagem.
A camera olha para a posição do objeto (xt,yt,zt). Finalmente, a projeção é mostrada como você esperaria (na ultima linha de codigo).
----------------------------------------
1.6. Animaçao através de deformação
Uma simples animaçao de pulo foi usada para mostrar ao jogador quando nós pulamos ou caimos ou quando nao.
A bola vermelha que é o personagem principal é deformada baseada em sua velocidade.
O codigo fala por si mesmo:
- Código:
//animation (deform)
if abs(zspeed)<8 then deform=abs(zspeed);
//draw ball
d3d_draw_ellipsoid(x-16,y-16,z-deform, x+16,y+16,z+32+deform,background_get_texture(bac_Character),1,1,16);
1.7. Fazendo o personagem caminhar, pular, aterrisar e cair
O codigo que se trata de andar, pular, aterrisar e cair do personagem é bastante complicado.
Envolve bastante de lógica. No Step event do character(obj_Character) encontramos o script scr_Gravity.
Isso basicamente checa se o character esta sobre a plataforma ou nao. Olhe isso:
- Código:
//checa se esta pulando
if jump=1 then exit;
//checa se esta caindo
if fall=1 then exit;
//define gravity
if collision_point(x,y,chi_Platform,false,false) then
{
znear=instance_nearest(x,y,chi_Platform).z;
if z=znear then zgravity=0;
else {fall=1;speed+=.2;zgravity=-.5;}
}
else {fall=1;speed+=.2;zgravity=-.5;}
- Código:
//move in z direction
z+=zspeed;
zspeed+=zgravity;
//drowned
if z<-512-128 then game_restart();
- Código:
//check if not falling yet
if sign(zspeed)>=0 then exit;
//check if falling
if sign(zspeed)<0 then fall=1;
//land if falling
if collision_point(x,y,chi_Platform,false,false) then
{
znear=instance_nearest(x,y,chi_Platform).z;
if z=znear ||
(z>znear && z<znear+global.Grid/4)
then {jump=0;fall=0;z=znear; zspeed=0; zgravity=0}
}
Isso fara o personagem aterrisar na plataforma.
Um final script que mensionarei é o script de pulo (encontrado no evento ao apertar espaço do obj_Character)
nomeado: scr_Jump. Seguindo o codigo:
- Código:
//check if jumping
if jump=1 then exit;
//check if falling
if fall=1 then exit;
//check if you can jump
znear=instance_nearest(x,y,chi_Platform).z;
if z=znear then {jump=1;zspeed=8;zgravity=-.5}
esta exatamente na plataforma ou nao, fazendo o character pular.
***
dodoop- Membro
- Mensagens : 41
Fama : 14
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos