GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21


Start 3D! [Tutorial]

3 participantes

Ir para baixo

Start 3D! [Tutorial] Empty Start 3D! [Tutorial]

Mensagem por Thiago_o_programador Dom 24 Jun 2012, 13:57

Nome: Start 3D!
Nível de dificuldade: iniciante (Em 3D) mediano (Em Gml em geral)
Requerimentos: Versão do GM 8 - Pro (Funções D3D rodam apenas na versão PRO)

Bem pessoal, hoje vou ensinar como 'entrar' no mundo 3D através do Game Maker, então vamos por a mão na massa! (Literalmente falando)

Câmera


Em um game 3D a câmera é um dos objetos mais importantes, nela estão armazenadas as configurações de projeção do 'mundo' nas funções:
Código:
d3d_set_projection(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup)
d3d_set_projection_ext(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup,angle,aspect,znear,zfar)

Hoje vamos trabalhar com a primeira que é mais simples.
'xfrom', 'yfrom' e 'zfrom' são, como o nome já diz, de onde a câmera está olhando.
'xto', 'yto' e 'zto' são os pontos para onde a câmera vai olhar.
'xup', 'yup' e 'zup' são como niveis de desfoque da câmera, os valores padrão para eles são respectivamente 0,0,1; mais é claro que vai depender do programador.

Vamos começar!

Crie um objeto e chame-o de 'obj_cam' (Sem aspas)
Daí no evento CREATE adicione:
Código:
d3d_start()
Está função serve para ligar o modo 3d no game maker alterando suas configurações e desbloqueando as outras funções 'd3d'.

Código:
d3d_set_perspective(true)
A perspectiva aumenta a nossa visão de profundidade dos objetos na tela.

Código:
d3d_set_hidden(true)
O hidden fara com que as superfícies atrás de objetos não sejam desenhadas. (Muito util não?)

Código:
d3d_set_culling(false)
Isso faz com que as partes internas dos objetos não sejam desenhadas. Por exemplo num jogo onde a câmera rotacione, e por acidente ela entrar em um objeto, as paredes ficarão invisíveis.

Código:
texture_set_interpolation(true)
Melhora a qualidade das texturas.

Código:
draw_set_color(c_white)
Adiciona a cor padrão de desenho.

Código:
z=50
Os objetos do Game Maker já tem as variáveis x e y por padrão, mas não tem a variável 'z' que nós devemos adicionar manualmente.

Código:
angulo=0 dx=0 dy=0 dz=0
Servem para segurar a posição x,y,z, rotacionar a câmera e normalizar os vetores da mesma.

Código:
instance_create(x,y,obj_player)
Cria o Personagem dentro da Câmera

Crie o evento STEP e adicione:

Código:
if keyboard_check(vk_left) {angulo+=4}
if keyboard_check(vk_right) {angulo-=4}
Ele vai rotacionar a câmera consoante as teclas apertadas.

Código:
yang=15 //Altura da câmera relativa ao personagem na esfera trigonométrica.
dx=cos(degtorad(angulo));
dy=-sin(degtorad(angulo));
dz=tan(degtorad(yang));
Armazena e faz os cálculos necessários nos movimentos x,y,z para rotacionar a câmera.

Código:
m=sqrt(sqr(dx)+sqr(dy)+sqr(dz));
dx/=m;
dy/=m;
dz/=m;
Normaliza os vetores da câmera para que quando girar a câmera não ficar entrando e sindo do 'obj_player'.

Pronto! O mais difícil já foi agora vamos para o DRAW:

Código:
x = obj_player.x+dx*175
y = obj_player.y+dy*175
z = obj_player.z+dz*175
d3d_set_projection(x,y,z,obj_player.x,obj_player.y,z,0,0,1)

Esse código baseia a posição x, y e z nas respectivas posições do obj_player (que será criado depois) e uma distancia a mais para não dar colapso.

Pronto a Câmera já foi, agora criar o personagem.

Personagem


Primeiramente crie um objeto chamado 'obj_player' (Sem aspas)

No CREATE adicione:
Código:
z=0 //Posição Z do Player no mundo
zspeed=0 //Zspeed serve para o pulo
zgravity=0 //Zgravity é para a gravidade
friction=0.5 //determina a fricção absoluta do Player

No STEP coloque:
Código:
direction=point_direction(obj_cam.x,obj_cam.y,x,y)
Estabelece a variavel local 'direction' de acordo com a localização do obj_cam, é como se o player estivesse apontando na direção do obj_cam.

Código:
if keyboard_check(vk_up) {speed=8}
if keyboard_check(vk_down) {speed=-8}
Usando as teclas de navegação o player ira mover-se.

Código:
if keyboard_check_pressed(vk_space)&&zspeed=0&&zgravity=0 {zspeed=10}
Se for pressionado espaço e zspeed for igual a 0 assim como o zgravity ele vai pular.

Terminamos o STEP, agora adicione o evento END STEP:

Código:
z-=zgravity
z+=zspeed
Isso faz com que z esteja em função de zspeed e zgravity.

Código:
if zspeed>0 {zspeed-=0.5}else{zspeed=0}
if z>0&&zspeed=0 {zgravity+=0.5}
if z<=0 {zgravity=0 zspeed=0 z=0}
Esse código estabelece a gravidade, por ser um tuto de iniciação vou estabelecer o chão como z=0, plataformas serão em tutoriais posteriores.

Ok, inicie o evento DRAW e adicione:
Código:
d3d_draw_ellipsoid(x-16,y-16,z,x+16,y+16,z+32,background_get_texture(bac_ball),1,1,25)
Isso desenhara uma esfera de dimensões: 32x32x32. Na textura do background que será criado depois.

Código:
d3d_draw_floor(0,0,-1,room_width,room_height,0,background_get_texture(bac_floor),20,15)
Será desenhado o chão do tamanho da room com a textura que será criada posteriormente.

Pronto terminamos o Player.

Texturas


Já estamos quase terminando, crie uma textura e chame de 'bac_ball' e adicione a textura:

Start 3D! [Tutorial] Tex

Crie outra e chame de 'bac_floor' e adicione a textura:

Start 3D! [Tutorial] Tex

Pronto agora basta adicionar uma room e colocar a Câmera.

Para quem não conseguiu montar o game aqui vai a engine:
Link direto

Espero que tenham gostado, até a proxima!
Thiago_o_programador
Thiago_o_programador

Games Ranking : Nota D

Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios : Start 3D! [Tutorial] Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Start 3D! [Tutorial] Empty Re: Start 3D! [Tutorial]

Mensagem por ariel h.s Dom 24 Jun 2012, 14:48

Po cara,seu tutorial esta muito legal,pena que eu não tenho o GM pro,vc tem uma dica de onde eu encontro o gm + crack?Quero começar a desenvouver meus games em 3º dimensão. What a Face
ariel h.s
ariel h.s

Games Ranking : Nota C

Notas recebidas : E-D-D-B
Data de inscrição : 30/04/2012
Reputação : 2
Número de Mensagens : 191
Prêmios : Start 3D! [Tutorial] Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Start 3D! [Tutorial] Empty Re: Start 3D! [Tutorial]

Mensagem por Thiago_o_programador Dom 24 Jun 2012, 19:28

Brigadão!!

of: Se você ficar procurando GM+cr*** você vai acabar com alertas, leia as regras, o melhor mesmo é comprar Smile é só 25 ¢
Thiago_o_programador
Thiago_o_programador

Games Ranking : Nota D

Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios : Start 3D! [Tutorial] Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Start 3D! [Tutorial] Empty Re: Start 3D! [Tutorial]

Mensagem por DiegoBr Dom 24 Jun 2012, 19:36

Achei muito bom seu tutorial,vai me ajudar muito no futuro quando eu pensar em passar a criação em 3D =)
vlw
DiegoBr
DiegoBr

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 11/03/2011
Reputação : 2
Número de Mensagens : 156
Prêmios : Start 3D! [Tutorial] Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • Java
  • C#
  • Unreal
  • Javascript


https://www.youtube.com/channel/UCbXNlbl7fWz1Lw5F_D4c4Ng

Ir para o topo Ir para baixo

Start 3D! [Tutorial] Empty Re: Start 3D! [Tutorial]

Mensagem por Thiago_o_programador Dom 24 Jun 2012, 19:40

Brigado amigo, eu espero criar outro muito em breve falando sobre plataformas elevadas.
Thiago_o_programador
Thiago_o_programador

Games Ranking : Nota D

Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios : Start 3D! [Tutorial] Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Start 3D! [Tutorial] Empty Re: Start 3D! [Tutorial]

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos