3D no GM - Parte 2

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

3D no GM - Parte 2

Mensagem por KJr em Qui 03 Abr 2008, 19:20

Se você tiver o projeto do fim do 1º tutorial, você poupa tempo, mas eu vou falar desde o início.

Importe dois backgrounds diferentes, um será o céu e o outro o chão. Nomeie-os de back_sky e back_floor, respectivamente.

Agora crie o obj_cam. No evento Create deste objeto, execute o script ini_3D:
Código:
d3d_start();
d3d_set_perspective(true);
d3d_set_hidden(true);
d3d_set_lighting(false);
draw_set_color(c_white);
d3d_set_fog(true,c_white,1,1024);
d3d_set_culling(false);
d3d_set_shading(false);
texture_set_interpolation(true);

Agora começa a mudar. Crie um script de nome ini_camera com esse código:
Código:
zdirection = 0;
instance_create(x,y,obj_player)
instance_create(0,0, obj_floors)

Execute este script no evento Create do obj_cam, após o script ini_3D.

Esse script vai declarar a variável zdirection(cujo uso será visto em breve) e criar uma instância do obj_player e uma obj_floors, assim você não vai precisar colocar estes objetos na room, bastará colocar um obj_cam no local onde você quer que o jogador comece.

Crie um objeto obj_player e no evento Create, em um Execute Code, declare a variável z, que representa a posição do player no eixo Z:
Código:
z=0;

Agora crie um script dra_camera:
Código:
xf = obj_player.x;
yf = obj_player.y;
zf = obj_player.z + 64;

xt = xf+cos(degtorad(direction));
yt = yf-sin(degtorad(direction));
zt = zf-sin(degtorad(zdirection));

d3d_set_projection(xf,yf,zf, xt,yt,zt, 0,0,1);

Execute esse script no evento Draw do obj_cam. Vamos analisar o código.
Como já foi visto, xf,yf,zf é de onde a câmera está, nesse caso, a câmera sempre estará onde o player estiver. Já xt,yt,zt é pra onde a câmera olha. Ela sempre vai olhar para um local que é relativo ao ponto(xf,yf,zf) e à direção da câmera.

direction é a direção no plano, é uma variável interna do GM.
zdirection é a variável que declaramos antes, e indica a direção vertical da câmera, se elá está olhando pra cima ou pra baixo.

Tudo bem, mas e o movimento?!
Vamos criar o script de movimento, scr_move, que será executado no evento Step do obj_player. Vamos construí-lo passo a passo:

Código:
friction = 0.5
Define o atrito no plano XY em 0.5

Código:
if keyboard_check(vk_up) then {motion_add(obj_cam.direction,0.2);friction=0;}
else
if keyboard_check(vk_down) then {motion_add(obj_cam.direction+180,0.2);friction=0;}

Se a seta pra cima for pressionada, adicionará um vetor de movimento na direção da câmera, vai mover o player pra frente.
Se a seta pra baixo for pressionada, adicionará um movimento inverso, pra trás.

Código:
if keyboard_check(vk_left) then {obj_cam.direction+=4;}
else
if keyboard_check(vk_right) then {obj_cam.direction-=4;}

Se a seta pra esquerda for pressionada, mudará a direção do obj_cam. O contrário vale pra seta da direita.

Código:
if keyboard_check(ord('W')) and obj_cam.zdirection > -80 then {obj_cam.zdirection-=4;}
else
if keyboard_check(ord('S')) and obj_cam.zdirection < 80 then {obj_cam.zdirection+=4;}

Se as teclas W/S forem pressionads, mudará a zdirection, fazendo a câmera olhar para cima/baixo.

Código:
if speed > 12 then speed = 12;
if speed < -6 then speed = -6;

Essas duas linhas limitarão a velocidade de movimento.

Código:
obj_cam.zdirection *= 0.95

Essa linha vai fazer com que a câmera sempre retorne aos poucos para a posição original, olhando reto.

Esse script acabou. Agora crie um novo script dra_floors:
Código:
text_floor = background_get_texture(back_floor)
text_ceil = background_get_texture(back_sky)

d3d_draw_floor(-4096,-4096,0, 4096,4096,0, text_floor, 1,1)
d3d_draw_floor(-4096,-4096,256, 4096,4096,256, text_ceil, 1,1)

Este script vai desenhar o chão e o céu, de acordo com os backgrounds que foram importados no início. Portanto crie um obj_floors, e no evento Draw execute esse script.

Último passo, crie uma room, coloque um obj_cam em algum lugar e rode o jogo.  ;D

Pronto. Você tem um céu e um chão, e um herói que se movimenta, temos uma visão em primeira pessoa. ;)

Os dois tutoriais já dão uma base boa pra quem quer começar, além de mostrarem que dá um trabalho enorme fazer um jogo em 3D.

KJr

Ranking : Nota B
Número de Mensagens : 38
Data de inscrição : 20/03/2008
Notas recebidas : B
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: 3D no GM - Parte 2

Mensagem por RKNF1995 em Sex 01 Ago 2008, 10:24

cara eu fiz egostei mas so da pra aze no pro queria saber se tem algum seja possivel na verssao free do gm pois o pc que eu mais utilizo pra criaçao de jogos te so a verssao free

RKNF1995

Número de Mensagens : 1257
Idade : 21
Data de inscrição : 19/07/2008
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://www.rknf1995.blogspot.com

Voltar ao Topo Ir em baixo

Re: 3D no GM - Parte 2

Mensagem por Kabeção em Sex 01 Ago 2008, 12:16

Não é possivel, as funções d3d só podem ser utilizadas na versão pro.

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: 3D no GM - Parte 2

Mensagem por RKNF1995 em Sex 01 Ago 2008, 13:55

vlw pela resposta era so para ter ceteza

RKNF1995

Número de Mensagens : 1257
Idade : 21
Data de inscrição : 19/07/2008
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://www.rknf1995.blogspot.com

Voltar ao Topo Ir em baixo

Re: 3D no GM - Parte 2

Mensagem por Natch em Seg 15 Set 2008, 14:38

gostei tutourial...
nao tem o tutourial (3D no GM - Parte 3)? queria aprender mais, lol
_____________________________________________


Brevemente em www.studionatch.com

Natch

Número de Mensagens : 501
Idade : 27
Data de inscrição : 05/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://studionatch.com.sapo.pt/

Voltar ao Topo Ir em baixo

Re: 3D no GM - Parte 2

Mensagem por Markituh em Qui 29 Out 2009, 11:29

Cara eu fiz tudo o que você falou,ai quando vou testar fica tudo preto! :|

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: 3D no GM - Parte 2

Mensagem por Conteúdo patrocinado Hoje à(s) 14: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