3D Parte 7
Página 1 de 1
3D Parte 7
Créditos:
psycon:Por traduzir o tutorial para o pôrtugues.
dodoop:Por disponibilizar.
Tutorial:
Degraus e rampas
O que você aprenderá: criar Degraus e rampas.
1.1. Introduction
O que você aprenderá:
· Montando os objetos,
· Montando os scripts,
· Batendo contra blocos,
· Caminhando em rampas,
· Trocando/alternando entre rampas e degraus.
1.2. Montando os objetos
Esse tutorial é sobre Degraus e rampas. Iremos ver que não há nenhuma diferença real entre eles.
A unica diferença esta no modo de ver, mas nao no modo de trabalhar/funcionar.
Para ver como funciona, Vamos dar uma olhada nos objetos e scripts que usaremos.
Existem 4 objetos que serao usados: a camera (obj_Camera), um chão (obj_Floor), um bloco (obj_Block) e uma rampa (obj_Ramp).
A camera é necessaria para "olhar" a cena (um planeta alienigina no caso). Também serve para a visao de primeira pessoa do nosso personagem.
O chao servira para o nosso objeto de terra que tem o valor z = 0 (altura zero). Iremos precisar de blocos objects para andar sobre eles e o objeto da rampa para subir nos blocos.
1.3. Montando os scripts
Como eu disse, tambem usaremos scripts. Vamos dar uma olhada em todos eles e ver o que fazem.
O script ‘scr_Start3D’ seta/liga o modo usual 3D (veja o tutorial ‘começando com 3D’).
O script ‘scr_Camera’ deve tambem lembrar algo familiar (veja o tutorial ‘Especificaçao do Seno’). Vamos lembrar do codigo:
O script ‘scr_DeclareZ’ nao deve te surpreender tambem (veja o tutorial ‘Z values’),
Nem o script ‘scr_Mouselook’ (veja o tutorial ‘Z detection’). O script scr_Block simplifica desenhar do bloco e o script scr_Floor faz o mesmo para a terra/chao.
Nenhuma surpresa por enquanto, certo?
1.4. Batendo contra blocos
Nós não queremos que nossa camera (ou character) se mova dentro de um bloco, entao queremos que a camera/personagem bata contra os blocos quando nao estivermos no topo deles.
Iremos usar o script ‘scr_CameraBump’:
colidir com um bloco ira executar script ‘scr_BlockCheck’. Colocaremos um evento no evento de colisao da camera. O script (scr_BlockCheck) é esse:
Se o character tocar um bloco, checariamos o mais próximo block e verificariamos se esse valor z é maior ou igual a do nosso character (z).
Se for, sera executado o comando do script usado no ‘script_execute’ .
Esse meio nos proporcionara andar sobre os blocos(zgravity é zero) mas cairemos fora dos blocos quando nao estivermos sobre eles (zgravity é 1).
(Mais sobre o uso da gravidade pode ser encontrado no tutorial sobre ‘Platformas’.)
1.5. Caminhando sobre rampas
No Step event da camera object encontraremos dois scripts, O primeiro ‘scr_Move’ que tem o código seguinte:
Mas se aqui existir uma rampa, sera abilitado para andar sobre ela pela configuraçao de zgravity e zspeed serem setados
para zero e achando a mais próxima rampa object (obj_Ramp) e modificar o z do character (ou camera) para a altura dele mesmo (48) menos a distância
para o ponto (x,y) da mais próxima rampa.
O sprite da rampa aponta Leste.
Se você der uma olhada no sprite da rampa (spr_RampEast), vc vera aonde é a origem do sprite.
Iremos usar essa origem para calcular a altura do character.
Queremos que o character suba (valor de z mais alto) até alcançar o topo (origem) da rampa.
O sprite é chamado ‘spr_RampEast’ porque esta apontando para leste.
Em um game, você poderia querer criar mais rampas que apontem outras direções também.
O segundo script encontrado no Step event da camera object é ‘scr_MoveZ’.
O codigo dele:
1.6. Trocando/alternando entre rampas e degraus
O codigo no script ‘scr_Ramp’ é esse:
Caso contrário, desenhara uma sucessao de blocos também conhecido como degraus/escada.
A troca entre rampas e degraus é feita pelo Mouse event da rampa object (obj_Ramp). Veja o codigo para trocar a variavel stairs de zero para um e de um para zero (alavanca):
Clicando com o botao direito do mouse, alancara a forma entre uma rampa ou de uma escada.
Esse é o princípio basico do código. Como eu disse: a unica diferença esta no modo olhar,nao no modo de funcionar.
***
psycon:Por traduzir o tutorial para o pôrtugues.
dodoop:Por disponibilizar.
Tutorial:
Degraus e rampas
O que você aprenderá: criar Degraus e rampas.
1.1. Introduction
O que você aprenderá:
· Montando os objetos,
· Montando os scripts,
· Batendo contra blocos,
· Caminhando em rampas,
· Trocando/alternando entre rampas e degraus.
1.2. Montando os objetos
Esse tutorial é sobre Degraus e rampas. Iremos ver que não há nenhuma diferença real entre eles.
A unica diferença esta no modo de ver, mas nao no modo de trabalhar/funcionar.
Para ver como funciona, Vamos dar uma olhada nos objetos e scripts que usaremos.
Existem 4 objetos que serao usados: a camera (obj_Camera), um chão (obj_Floor), um bloco (obj_Block) e uma rampa (obj_Ramp).
A camera é necessaria para "olhar" a cena (um planeta alienigina no caso). Também serve para a visao de primeira pessoa do nosso personagem.
O chao servira para o nosso objeto de terra que tem o valor z = 0 (altura zero). Iremos precisar de blocos objects para andar sobre eles e o objeto da rampa para subir nos blocos.
1.3. Montando os scripts
Como eu disse, tambem usaremos scripts. Vamos dar uma olhada em todos eles e ver o que fazem.
O script ‘scr_Start3D’ seta/liga o modo usual 3D (veja o tutorial ‘começando com 3D’).
O script ‘scr_Camera’ deve tambem lembrar algo familiar (veja o tutorial ‘Especificaçao do Seno’). Vamos lembrar do codigo:
- Código:
//draw what the camera sees
xt=x+cos(direction*pi/180);
yt=y-sin(direction*pi/180);
zt=z+zdirection;
d3d_set_projection(x,y,z+64, xt,yt,zt+64, 0,0,1); //64 é altura de z (pé) do character's
O script ‘scr_DeclareZ’ nao deve te surpreender tambem (veja o tutorial ‘Z values’),
Nem o script ‘scr_Mouselook’ (veja o tutorial ‘Z detection’). O script scr_Block simplifica desenhar do bloco e o script scr_Floor faz o mesmo para a terra/chao.
Nenhuma surpresa por enquanto, certo?
1.4. Batendo contra blocos
Nós não queremos que nossa camera (ou character) se mova dentro de um bloco, entao queremos que a camera/personagem bata contra os blocos quando nao estivermos no topo deles.
Iremos usar o script ‘scr_CameraBump’:
- Código:
//camera bumps into solid things
x=xprevious;
y=yprevious;
speed=0;
colidir com um bloco ira executar script ‘scr_BlockCheck’. Colocaremos um evento no evento de colisao da camera. O script (scr_BlockCheck) é esse:
- Código:
//check for bumping against blocks
if collision_circle(x,y,2,obj_Block,false,false) then
{
near=instance_nearest(x,y,obj_Block);
if near.z>= z then script_execute(scr_CameraBump);
}
else
{zgravity=1;}
Se o character tocar um bloco, checariamos o mais próximo block e verificariamos se esse valor z é maior ou igual a do nosso character (z).
Se for, sera executado o comando do script usado no ‘script_execute’ .
Esse meio nos proporcionara andar sobre os blocos(zgravity é zero) mas cairemos fora dos blocos quando nao estivermos sobre eles (zgravity é 1).
(Mais sobre o uso da gravidade pode ser encontrado no tutorial sobre ‘Platformas’.)
1.5. Caminhando sobre rampas
No Step event da camera object encontraremos dois scripts, O primeiro ‘scr_Move’ que tem o código seguinte:
- Código:
//check for ramps
if collision_circle(x,y,2,obj_Ramp,false,false) then
{
zgravity=0;zspeed=0;
near=instance_nearest(x,y,obj_Ramp);
z=48-distance_to_point(near.x,near.y);
}
else
script_execute(scr_BlockCheck);
Mas se aqui existir uma rampa, sera abilitado para andar sobre ela pela configuraçao de zgravity e zspeed serem setados
para zero e achando a mais próxima rampa object (obj_Ramp) e modificar o z do character (ou camera) para a altura dele mesmo (48) menos a distância
para o ponto (x,y) da mais próxima rampa.
O sprite da rampa aponta Leste.
Se você der uma olhada no sprite da rampa (spr_RampEast), vc vera aonde é a origem do sprite.
Iremos usar essa origem para calcular a altura do character.
Queremos que o character suba (valor de z mais alto) até alcançar o topo (origem) da rampa.
O sprite é chamado ‘spr_RampEast’ porque esta apontando para leste.
Em um game, você poderia querer criar mais rampas que apontem outras direções também.
O segundo script encontrado no Step event da camera object é ‘scr_MoveZ’.
O codigo dele:
- Código:
//perform gravity
z+=zspeed;
zspeed-=zgravity;
if z<0 then {z=0;zspeed=0;zgravity=0;}
1.6. Trocando/alternando entre rampas e degraus
O codigo no script ‘scr_Ramp’ é esse:
- Código:
//draw ramp
if stairs=0 then d3d_draw_floor(x-64,y-32,z, x,y+32,z+48,background_get_texture(bac_Ramp),1,1)
else
//draw stairs
{
d3d_draw_block(x,y-32,z, x-64,y+32,z+12,background_get_texture(bac_Ramp),1,1)
d3d_draw_block(x,y-32,z+12, x-48,y+32,z+24,background_get_texture(bac_Ramp),1,1)
d3d_draw_block(x,y-32,z+24, x-32,y+32,z+36,background_get_texture(bac_Ramp),1,1)
d3d_draw_block(x,y-32,z+36, x-16,y+32,z+48,background_get_texture(bac_Ramp),1,1)
}
Caso contrário, desenhara uma sucessao de blocos também conhecido como degraus/escada.
A troca entre rampas e degraus é feita pelo Mouse event da rampa object (obj_Ramp). Veja o codigo para trocar a variavel stairs de zero para um e de um para zero (alavanca):
- Código:
//change into stairs
stairs=abs(stairs)-1;
Clicando com o botao direito do mouse, alancara a forma entre uma rampa ou de uma escada.
Esse é o princípio basico do código. Como eu disse: a unica diferença esta no modo olhar,nao no modo de funcionar.
***
dodoop- Membro
- Mensagens : 41
Fama : 14
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos