Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Pokémon Genesis Online! (PGO)
Qua 05 Jul 2017, 17:08 por Lexar

» Tileset Converter to MV
Sex 12 Maio 2017, 13:07 por Douggi

» [Dúvida] Como tirar a porcentagem de esquiva
Ter 09 Maio 2017, 22:15 por Neil Flame Runner

» Pack Resources, Sprites e etc
Qua 23 Dez 2015, 09:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Ter 22 Dez 2015, 08:14 por ::KimMax::

» Fantasy Art Online
Dom 18 Out 2015, 16:42 por daviih123

» Você vai ter medo do Nerve gear?
Sab 25 Jul 2015, 16:02 por Kirito-kun

» O Barato é louco
Sab 27 Jun 2015, 15:26 por Halt

» Download RPG Maker 2000 + RTP em português
Qui 21 Maio 2015, 19:28 por Wismael

» Divulgando meu grupo e página do Facebook
Ter 19 Maio 2015, 13:06 por Halt


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 [Tutorial] Start 3D em Sex 09 Nov 2012, 16:53

~Razor

avatar
Membro de Honra
Membro de Honra
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:

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.

Ver perfil do usuário http://lostmakers.web-rpg.com/

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum