- ...
- Mensagens : 106
Reputação : 0
Data de inscrição : 26/01/2012
Localização : Guaratinguetá - SP
Game Maker - Rampas e Degraus
Dom 29 Jan - 20:42:28
3D Tutorials
for GM6
by John J.A.H. Weeren Créditos a esse cara que nem conheço
Tutorials Copyrights
All rights reserved. Copyright 2004 by John J.A.H. Weeren. Unauthorized use
or reproduction, whole or in part, without written permission from the author is
strictly prohibited.
Game Maker Copyright
Game Maker by Mark Overmars (http://www.gamemaker.nl).
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Traduzido por Alex Klen 05/09/05
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:
//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
Note que nao usamos seno para a zdirection da camera (pitch). Mas isso ainda funciona.
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’:
//camera bumps into solid things
x=xprevious;
y=yprevious;
speed=0;
Chamaremos esse script quando precisarmos dele. (Chamar um script por meio de executar e rodar um script com o "piece of code"). Quando a camera object (obj_Camera)
colidir com um bloco ira executar script ‘scr_BlockCheck’. Colocaremos um evento no evento de colisao da camera. O script (scr_BlockCheck) é esse:
//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;}
Primeiro checa se o character está tocando um bloco. Se nao, a gravidade sera ligada (veja a ultima linha do codigo).
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:
//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);
Primeiro verificariamos se aqui tiver uma rampa. Se nao, executara o script ‘scr_BlockCheck’ denovo (leia o paragrafo anterior).
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:
//perform gravity
z+=zspeed;
zspeed-=zgravity;
if z<0 then {z=0;zspeed=0;zgravity=0;}
Isso simplesmente assegurara a velocidade e a gravidade a funcionar e para que o character nao va para baixo do nivel da terra (valor z de 0).
1.6. Trocando/alternando entre rampas e degraus
O codigo no script ‘scr_Ramp’ é esse:
//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)
}
A primeira linha checa se a variavel stairs é zero. Se for, desenhara a rampa (com o d3d_draw_floor.)
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):
//change into stairs
stairs=abs(stairs)-1;
Note que vc nao precisa de um "if… then… loop" para alavancar o valor de stairs(1 ou 0).
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.
***
O tutorial foi feito por John J.A.H. Weeren,Apenas postei para vocês aprenderem sobre GM
Abraços! ^^
for GM6
by John J.A.H. Weeren Créditos a esse cara que nem conheço
Tutorials Copyrights
All rights reserved. Copyright 2004 by John J.A.H. Weeren. Unauthorized use
or reproduction, whole or in part, without written permission from the author is
strictly prohibited.
Game Maker Copyright
Game Maker by Mark Overmars (http://www.gamemaker.nl).
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Traduzido por Alex Klen 05/09/05
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:
//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
Note que nao usamos seno para a zdirection da camera (pitch). Mas isso ainda funciona.
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’:
//camera bumps into solid things
x=xprevious;
y=yprevious;
speed=0;
Chamaremos esse script quando precisarmos dele. (Chamar um script por meio de executar e rodar um script com o "piece of code"). Quando a camera object (obj_Camera)
colidir com um bloco ira executar script ‘scr_BlockCheck’. Colocaremos um evento no evento de colisao da camera. O script (scr_BlockCheck) é esse:
//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;}
Primeiro checa se o character está tocando um bloco. Se nao, a gravidade sera ligada (veja a ultima linha do codigo).
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:
//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);
Primeiro verificariamos se aqui tiver uma rampa. Se nao, executara o script ‘scr_BlockCheck’ denovo (leia o paragrafo anterior).
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:
//perform gravity
z+=zspeed;
zspeed-=zgravity;
if z<0 then {z=0;zspeed=0;zgravity=0;}
Isso simplesmente assegurara a velocidade e a gravidade a funcionar e para que o character nao va para baixo do nivel da terra (valor z de 0).
1.6. Trocando/alternando entre rampas e degraus
O codigo no script ‘scr_Ramp’ é esse:
//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)
}
A primeira linha checa se a variavel stairs é zero. Se for, desenhara a rampa (com o d3d_draw_floor.)
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):
//change into stairs
stairs=abs(stairs)-1;
Note que vc nao precisa de um "if… then… loop" para alavancar o valor de stairs(1 ou 0).
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.
***
O tutorial foi feito por John J.A.H. Weeren,Apenas postei para vocês aprenderem sobre GM
Abraços! ^^
- Skay Galaxte
- Mensagens : 303
Reputação : 6
Data de inscrição : 03/11/2011
Idade : 22
Localização : Casa
Re: Game Maker - Rampas e Degraus
Dom 29 Jan - 20:45:38
muito bom, se eu pudesse daria 10 rings, mais como não posso...
continuando, ficou muito bom vou fazer num game meu
valew pela ajuda migão, até
continuando, ficou muito bom vou fazer num game meu
valew pela ajuda migão, até
Re: Game Maker - Rampas e Degraus
Dom 29 Jan - 21:06:41
Nossa Woody! rampa 3D! muito bom, você não fez o tutorial mais mesmo assim vou dar 10 rings. Onde você achou esse tutorial tem outros?
- ...
- Mensagens : 106
Reputação : 0
Data de inscrição : 26/01/2012
Localização : Guaratinguetá - SP
Re: Game Maker - Rampas e Degraus
Dom 29 Jan - 21:22:28
Sonic Luan escreveu:
Nossa Woody! rampa 3D! muito bom, você não fez o tutorial mais mesmo assim vou dar 10 rings. Onde você achou esse tutorial tem outros?
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] Os tutoriais estão aqui,Já os rings,muito obrigado! Até +
Permissões neste sub-fórum
Não podes responder a tópicos