Últimos assuntos
Painel do usuário
Parceiros
[Turtorial] Start 3D
Página 1 de 1 • Compartilhe
[Turtorial] Start 3D
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)
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:
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:
Crie outra e chame de 'bac_floor' e adicione a textura:
Pronto agora basta adicionar uma room e colocar a Câmera.
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)
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:
- Spoiler:
- 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:
Crie outra e chame de 'bac_floor' e adicione a textura:
Pronto agora basta adicionar uma room e colocar a Câmera.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
Sex Nov 18, 2016 8:52 am por Finalshare
» Shiginima Launcher SE V2.0
Ter Out 20, 2015 6:08 pm por Finalshare
» [Extensão] Easy 3D
Qua Set 23, 2015 6:14 pm por Cyisthat
» Acoustica Mixcraft 6.0 + crack
Ter Set 15, 2015 8:32 pm por Finalshare
» Várias Sugestões
Ter Set 15, 2015 7:59 pm por Finalshare
» [Álbum] Abyss
Dom Set 13, 2015 10:12 pm por Cyisthat
» [Extensão] Easy Motion
Sex Set 11, 2015 11:04 pm por Finalshare
» Rpg Maker Vx Ace + Crack
Sex Set 11, 2015 4:33 pm por Finalshare
» [Minecraft] Shiginima Launcher
Sex Set 11, 2015 2:42 pm por Finalshare