Brasil G4mes
Registre-se para ter acesso total à todas as seções do fórum!
Jogue, brinque e o mais importante, divirta-se!

Participe do fórum, é rápido e fácil

Brasil G4mes
Registre-se para ter acesso total à todas as seções do fórum!
Jogue, brinque e o mais importante, divirta-se!
Brasil G4mes
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

3D Parte 2

Ir para baixo

3D Parte 2 Empty 3D Parte 2

Mensagem por dodoop Qui Jul 09, 2009 11:17 am

Créditos:
psycon:Por traduzir o tutorial para o portugues.
dodoop:Por disponibilizar.

Tutorial:

Valor Z.

O que você aprenderá: Desenhar um objeto esfera que desaparecera com a distância.

1.1. Introdução
O que você aprenderá:
· Desenho relativo de objetos,
· Apontando a camera pra um objeto,
· Exportando e importando scripts,
· Declarando o valor de z,
· Adicionando movimento ao valor z.

1.2. Desenho relativo de objetos

Esse tutorial é baseado no tutorial anterior (‘Começando com 3D’), assim leia aquele primeiro.
Como no exemplo do tutorial prévio, nós criaremos um objeto para se ver em 3D. Agora NAO criaremos um bloco novamente, mas ainda iremos criar uma forma basica: uma bola/esfera.
Assumindo que você viu o tutorial anterior, Vamos criar a room (roo_Tutorial), um background (bac_Ball), um objeto (obj_Ball)
e um script (scr_Ball), contendo o codigo que desenhara a esfera do qual iremos ver:
Código:

//draw the bubble(bolha,esfera)
d3d_draw_ellipsoid(x-16,y-16,z-16, x+16,y+16,z+16,background_get_texture(bac_Ball),1,1, 16);
Um elipsóide (ou esfera, bolha, bola) será desenhada na posição relativa (x,y,z).
Nós descobriremos como o valor de z ficara modificando sua posição. A esfera será desenhada em relaçao ao seu centro.
Esse centro será localizado na posição (x,y,z), portanto foi desenhado assim: de um lado (x-16, y-16, z-16) para um outro lado (x+16, y+16, y+16). Os dois proximos valores você ja viu anteriormente, indicam onde a textura será posicionada.
O ultimo, é o numero de vertices possiveis da esfera, quanto mais, mais definida é a forma da esfera, nao exagere muito pois cada valor é carregado na memoria, lido pelo processador,
repassado para a memoria de video e lido pelo processador da própria, ou seja pode deixar seu jogo lento, um numero recomendado:16 a 20.

Desenhando a esfera relativa aos valores x, y e z, significará que nós poderemos mudar sua posição (e outras coisas).
Se você esta familiarizado com games 2D no game maker você saberá que x e y sao variaveis reservadas muito importantes. O valor/variavel z tambem é outra variavel como x e y,
só que de uma direçao/dimenção diferente(profundidade). Você descobrirá o que fazer e como usa-la.
Mais tarde, mudaremos o x, y e z e veremos quais valores teremos.

---------------------------------------------
1.3. Apontando a camera pra um objeto

Tenhamos o objeto (obj_Ball) que executa o script (scr_Ball). Teremos o script executando no Draw event do Ball object.
Como no tutorial anterior, precisaremos duma camera para ver nosso objeto. Vamos criar o script para isso, nomeado
(scr_Camera) que terá o seguinte codigo:
Código:

//draw o que a camera vê
d3d_set_projection(0,0,0, obj_Ball.x,obj_Ball.y,obj_Ball.z, 0,0,1);
Como você pode ver, a camera será posicionada em (0,0,0) e olhara para a direçao do Ball object (obj_Ball.x, obj_Ball.y, obj_Ball.z). E será apontada para o centro do Ball object.

--------------------------------------------
1.4. Exportando e importando scripts no gm6

Precisaremos dum objeto que faça o script da camera ser executado, -como no exemplo anterior-.
Então criaremos o camera object (obj_Camera). No Draw event teremos o script da camera (scr_Camera).
Isso soa mais familiar agora.
OK, com o script adicionado. No Create event do obj da camera colocaremos o script que será usado para iniciar o modo 3D,
lembra-se?

Poderiamos ver e copiar isso do tutorial anterior. Abra o respectivo script (scr_Start3D), copie e cole nesse novo exemplo.
Mas há um modo melhor de se fazer isso! Abra o gm6 do exemplo anterior e selecione o script (scr_Start3D) clicando sobre ele.
Agora, com clique direito, podemos selecionar ‘Export Selected Script …’. Com isso você podera salvar o script como quizer, para abrir depois.
Certo, nós faremos isso. Sugiro salvar o arquivo com nome ‘scr_Start3D’.
Agora retornando para o exemplo que estavamos trabalhando e importado o script da camera há pouco exportado do exemplo prévio.
Simplesmente selecione ‘Import Scripts’ pelo menu do script (no GM’s janela principal) e selecione o script que você salvou
‘scr_Start3D’. O script estará na pasta respectiva dos scripts, pronto pra usar no nosso programa corrente agora.

-----------------------------------------
1.5. Declarando o valor de z

Como no tutorial anterior, adicionaremos o seguinte script nomeado ‘scr_Make’ no evento Create do obj da camera,
contendo o codigo:
Código:

//create ball object
instance_create(64,64,obj_Ball);
Esse codigo será executado depois do script de inicializacao (scr_Start3D).
Isso fará ser criado a instancia (obj_Ball) automaticamente para nós assim que a camera for criada. Colocando o obj da camera na room
(na janela de ediçao da room) e rodar o programa, teremos um erro disendo que "there is an unknown variable z" (existe uma variavel z desconhecida).
Isso porque o GM é por padrão feito para jogos 2D e z nao é uma variavel reservada/embutida reconhecida por padrão nele.
Em jogos 2D precisamos apenas das variaveis de x e y, em 3D precisamos de um terceiro valor: z. 2D precisamos 2 valores, 3D 3 valores. Faz sentido perfeito.
Nós teremos que criar a variavel z porque é desconhecida. Vamos criar um script para isso, assim poderemos usar ele para objetos futuros. Vamos criar um script nomeado (scr_DeclareZ)
isso será colocado no Ball object’s em Create event. Seguindo o codigo para a declaraçao do valor z:
Código:

//declare z value
z=0;
Só isso? Sim só isso! Se rodarmos o programa agora, funcionara perfeitamente e poderemos ver uma grande esfera no centro da tela.


1.6. Adicionando movimento ao valor z

Vamos adicionar o ultimo script chamado ‘scr_Motion’ onde usaremos o argument0 que definira a quantia de movimento (ou velocidade)pra incremento.
Deve se parecer com:
Código:

//aplicando movimento
z+=argument0;
Com isso poderemos fazer a esfera se mover ao longo do eixo z. Vamos fazer esse script
(scr_Motion) rodar no evento Step do Ball object’s assim manter a esfera em movimento sempre
(se afastando da camera).

Agora para executar esse script que criamos (com o argument0), façamos a execuçao dum pedaço de codigo "execute a piece of code".(Poderia ser do modo drag-and-drop também, para se executar o script de movimento e setarmos o campo correspondente ao argument0)
Nao faremos um script separado, entao nessa peça de codigo coloque:
Código:

//executando o scr_Motion
script_execute(scr_Motion,1);
//1 é o valor do argument0 ou seja o z será sempre adicionado em 1.
O script de movimento (scr_Motion) será executado agora com a adiçao de 1 movimento
(velocidade) como você provavelmente deve ter adivinhado. Se você rodar o programa verá a esfera se afastando gradualmente na distância nebulosa.
***
dodoop
dodoop
Membro
Membro

Mensagens Mensagens : 41
Fama Fama : 14

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