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
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
» Ainda temos gente aqui?
[Tutorial] Start 3D  EmptyQui 25 Nov 2021, 14:04 por Halt

» [Dúvida] Como tirar a porcentagem de esquiva
[Tutorial] Start 3D  EmptySex 19 Nov 2021, 17:14 por Halt

» Pokémon Genesis Online! (PGO)
[Tutorial] Start 3D  EmptyQua 05 Jul 2017, 18:08 por Lexar

» Tileset Converter to MV
[Tutorial] Start 3D  EmptySex 12 maio 2017, 14:07 por Douggi

» Pack Resources, Sprites e etc
[Tutorial] Start 3D  EmptyQua 23 Dez 2015, 12:30 por raydengv

» Download RPG Maker 2003 + RTP em português
[Tutorial] Start 3D  EmptyTer 22 Dez 2015, 11:14 por ::KimMax::

» Fantasy Art Online
[Tutorial] Start 3D  EmptyDom 18 Out 2015, 18:42 por daviih123

» Você vai ter medo do Nerve gear?
[Tutorial] Start 3D  EmptySáb 25 Jul 2015, 17:02 por Kirito-kun

» O Barato é louco
[Tutorial] Start 3D  EmptySáb 27 Jun 2015, 16:26 por Halt

» Download RPG Maker 2000 + RTP em português
[Tutorial] Start 3D  EmptyQui 21 maio 2015, 20:28 por Wismael


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

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

1[Tutorial] Start 3D  Empty [Tutorial] Start 3D Sex 09 Nov 2012, 19:53

~Razor

~Razor
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:

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:

[Tutorial] Start 3D  Tex

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

[Tutorial] Start 3D  Tex

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

http://lostmakers.web-rpg.com/

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

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