Entrar
Últimos assuntos
» Retorno da GMBR!!!por theguitarmester Ter 19 Mar 2024, 22:38
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42
» 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
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05
» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55
» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39
» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28
» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01
Terceira pessoa em gml- 3D
+2
LeandroDaher
LeeroyFan
6 participantes
Página 1 de 1
Terceira pessoa em gml- 3D
- Tutorial: Terceira pessoa em GML-
Antes de mais nada, quero apenas esclarecer que neste tutorial, não trataremos de modelos complicados nem de animações. Ele é só uma iniciação à programação em 3d na terceira pessoa.
Começando: Abra sua versão do Game Maker. Eu sei que funciona na versão 8.0 PRO e 6.1 PRO, mas deve funcionar nas outras também.
Primeiramente, crie uma sprite (ela vai representar seu personagem na room, portanto, você NÃO verá ela no modo 3D), e coloque o nome de "spr_player" (sem as aspas).
Esta sprite, como já foi citado, apenas representará o player na room, então você pode desenhar o que quiser (círculo, quadrado, pac-man).
Crie um Background (que vai ser a textura do player) e nomeie-o de "b_player". Para começar, pinte o quadrado padrão de alguma cor e desmarque a opção de tranparência. Se você quiser, pode ir mexendo e testando outros modos para que a textura do seu player fique mais elaborada. Uma dica é fazer um quadrado amarelo e, no meio, desenhar um rosto sorritente (tipo smiley).
Agora crie um background para o chão e nomeie-o de "b_floor". Uma dica é pintá-lo em "quadrados", como se fosse um azulejo de banheiro, para contrastar bem com o seu personagem.
Feito isso, crie um objeto, que será o player e coloque o nome de "obj_player". Associe-o à sprite do player e na opção "Depht:" Coloque o valor de 100.
No evento Create >> Execute a piece of Code, coloque:
O "z=10" é uma variável usada no modo 3d. O problema é que o próprio game maker reconhece as variáveis "X" e "Y", mas não a "Z" (que seria a 'profundidade'), portanto, temos que criar uma variável "Z" e dá-la o valor de 10, para que o personagem não fique na mesma altura que o chão (evitando bugs idiotas).
A "camdirection=direction" é uma variável criada para que, quando a câmera for criada, ela fique atrás do player, então ela tem que ficar na mesma direção que ele. Já a utilidade desta variável é diferente: Ela simplesmente existe porque a direção para qual o player está virado não é a mesma que a câmera, então, para evitar maaaais bugs idiotas e conflitos estúpidos, criamos, então, esta variável.
A "frction=1.3" é, oviamente, a fricção, mas retornaremos à ela quando estivermos programando os movimentos.
Para começar o modod 3D, usamos o comando "d3d_start()".
E linha "display_mouse_set(display_get_width()/2, display_get_height()/2);" serve para, quando o jogo começar, o mouse se mova para o centro da tela, assim evitando maais códigos idiotas.
_________________
Agora, no evento Draw >> Execute a piece of Code, coloque:
Criamos, então, uma variável chamada "Distance", que será a dstância entre o player e a câmera. O valor "60" pode ser mudado de acordo com a preferência ou exigência do POGramador.
As linhas "distance=60;
d3d_set_projection(
x-cos(degtorad(camdirection))*cos(degtorad(camzdirection))*distance,
y+sin(degtorad(camdirection))*cos(degtorad(camzdirection))*distance,
z+sin(degtorad(camzdirection))*distance,
x,y,z,
0,0,1);
" São feitas para definir a distância entre o plaer e a câmera e a posição do mesmo.
"d3d_draw_ellipsoid" é o comando usado para cria o player em si, e aqui também associamos a textura.
______________
Agora, no Step >> Execute a piece of Code:
Agora crie OUTRO "exectue a piece of code " no Step e coloque:
Agora você já pode rodar o jogo e ver o que temos. Mas ainda falta o chão.
Para criá-lo, crie um objeto chamado "obj_floor" e não associe-o a nenhuma sprite.
Nele, crie um evento Create >> Execute a piece of Code, e escreva:
Agora, no evento Draw >> Execute a piece of Code, coloque:
Aqui, criamos um chão com o tamanho de duas vezes o tamnaho da room (isso pode ser modificado), e colocamos a textura. Reparem que, enquanto o valor de "Z" do chão é de 0, o do player é de 10, para que o player fique um pouco acima do chão.
Agora rodem e divirtam-se!
Conclusão:
Traduzido e adaptado por LeeroyFan de SamusRidley.
Antes de mais nada, quero apenas esclarecer que neste tutorial, não trataremos de modelos complicados nem de animações. Ele é só uma iniciação à programação em 3d na terceira pessoa.
Começando: Abra sua versão do Game Maker. Eu sei que funciona na versão 8.0 PRO e 6.1 PRO, mas deve funcionar nas outras também.
Primeiramente, crie uma sprite (ela vai representar seu personagem na room, portanto, você NÃO verá ela no modo 3D), e coloque o nome de "spr_player" (sem as aspas).
Esta sprite, como já foi citado, apenas representará o player na room, então você pode desenhar o que quiser (círculo, quadrado, pac-man).
Crie um Background (que vai ser a textura do player) e nomeie-o de "b_player". Para começar, pinte o quadrado padrão de alguma cor e desmarque a opção de tranparência. Se você quiser, pode ir mexendo e testando outros modos para que a textura do seu player fique mais elaborada. Uma dica é fazer um quadrado amarelo e, no meio, desenhar um rosto sorritente (tipo smiley).
Agora crie um background para o chão e nomeie-o de "b_floor". Uma dica é pintá-lo em "quadrados", como se fosse um azulejo de banheiro, para contrastar bem com o seu personagem.
Feito isso, crie um objeto, que será o player e coloque o nome de "obj_player". Associe-o à sprite do player e na opção "Depht:" Coloque o valor de 100.
No evento Create >> Execute a piece of Code, coloque:
- Código:
z=10;
friction=1.3;
camdirection=direction;
camzdirection=0;
zdirection=0;
draw_set_color(c_white);
d3d_start()
display_mouse_set(display_get_width()/2, display_get_height()/2);
O "z=10" é uma variável usada no modo 3d. O problema é que o próprio game maker reconhece as variáveis "X" e "Y", mas não a "Z" (que seria a 'profundidade'), portanto, temos que criar uma variável "Z" e dá-la o valor de 10, para que o personagem não fique na mesma altura que o chão (evitando bugs idiotas).
A "camdirection=direction" é uma variável criada para que, quando a câmera for criada, ela fique atrás do player, então ela tem que ficar na mesma direção que ele. Já a utilidade desta variável é diferente: Ela simplesmente existe porque a direção para qual o player está virado não é a mesma que a câmera, então, para evitar maaaais bugs idiotas e conflitos estúpidos, criamos, então, esta variável.
A "frction=1.3" é, oviamente, a fricção, mas retornaremos à ela quando estivermos programando os movimentos.
Para começar o modod 3D, usamos o comando "d3d_start()".
E linha "display_mouse_set(display_get_width()/2, display_get_height()/2);" serve para, quando o jogo começar, o mouse se mova para o centro da tela, assim evitando maais códigos idiotas.
_________________
Agora, no evento Draw >> Execute a piece of Code, coloque:
- Código:
distance=60;
distance=60;
d3d_set_projection(
x-cos(degtorad(camdirection))*cos(degtorad(camzdirection))*distance,
y+sin(degtorad(camdirection))*cos(degtorad(camzdirection))*distance,
z+sin(degtorad(camzdirection))*distance,
x,y,z,
0,0,1);
d3d_transform_add_rotation_z(direction)
d3d_transform_add_translation(x,y,z)
d3d_draw_ellipsoid(10, 10, -10, -10, -10, 10, b_player, 1, 1, 20)
d3d_transform_set_identity();
d3d_transform_add_rotation_z(direction)
d3d_transform_add_translation(x,y,z)
d3d_draw_ellipsoid(10, 10, -10, -10, -10, 10, b_player, 1, 1, 20)
d3d_transform_set_identity();
Criamos, então, uma variável chamada "Distance", que será a dstância entre o player e a câmera. O valor "60" pode ser mudado de acordo com a preferência ou exigência do POGramador.
As linhas "distance=60;
d3d_set_projection(
x-cos(degtorad(camdirection))*cos(degtorad(camzdirection))*distance,
y+sin(degtorad(camdirection))*cos(degtorad(camzdirection))*distance,
z+sin(degtorad(camzdirection))*distance,
x,y,z,
0,0,1);
" São feitas para definir a distância entre o plaer e a câmera e a posição do mesmo.
"d3d_draw_ellipsoid" é o comando usado para cria o player em si, e aqui também associamos a textura.
______________
Agora, no Step >> Execute a piece of Code:
- Código:
camdirection-=(display_get_width()/2 - display_mouse_get_x())/2;
camzdirection+=(display_get_height()/2-display_mouse_get_y())/2;
display_mouse_set(display_get_width()/2, display_get_height()/2);
if camzdirection>80 {camzdirection=80}
if camzdirection<-20 {camzdirection=-20}
Agora crie OUTRO "exectue a piece of code " no Step e coloque:
- Código:
if (keyboard_check(ord("S")))
{motion_add(camdirection-180,2)}
if (keyboard_check(ord("W")))
{motion_add(camdirection,2)}
if (keyboard_check(ord("D")))
{motion_add(camdirection-90,2)}
if (keyboard_check(ord("A")))
{motion_add(camdirection+90,2)}
Agora você já pode rodar o jogo e ver o que temos. Mas ainda falta o chão.
Para criá-lo, crie um objeto chamado "obj_floor" e não associe-o a nenhuma sprite.
Nele, crie um evento Create >> Execute a piece of Code, e escreva:
- Código:
z=0;
Agora, no evento Draw >> Execute a piece of Code, coloque:
- Código:
d3d_draw_floor(0,0,0,room_width*2,room_height*2,0,background_get_texture(b_floor),24,24);
Aqui, criamos um chão com o tamanho de duas vezes o tamnaho da room (isso pode ser modificado), e colocamos a textura. Reparem que, enquanto o valor de "Z" do chão é de 0, o do player é de 10, para que o player fique um pouco acima do chão.
Agora rodem e divirtam-se!
Conclusão:
Traduzido e adaptado por LeeroyFan de SamusRidley.
Última edição por LeeroyFan em Dom 18 Jul 2010, 14:35, editado 1 vez(es)
Re: Terceira pessoa em gml- 3D
muinto bom tuto,quem quiser começar a fazer jogos em 3D,pode começar a aprender aqui.flws
LeandroDaher- Data de inscrição : 13/05/2010
Reputação : 3
Número de Mensagens : 357
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Terceira pessoa em gml- 3D
Bem legal esse tuto, continue assim!
Thiago_o_programador- Games Ranking :
Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 1
x 0 x 0 x 0
Re: Terceira pessoa em gml- 3D
Concordo com as opiniões, dos colegas anteriores!
Continue assim, melhorando cada vez mais este fórum!
Continue assim, melhorando cada vez mais este fórum!
correiajoao- Data de inscrição : 05/06/2010
Reputação : 0
Número de Mensagens : 353
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Terceira pessoa em gml- 3D
eu testei com o gm 7 pro e deu.
Concordo com todos que postaram atras de mim, ficou muito irada!
Concordo com todos que postaram atras de mim, ficou muito irada!
iluga- Data de inscrição : 23/11/2010
Reputação : 0
Número de Mensagens : 23
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Terceira pessoa em gml- 3D
Gostei... deu pra entender como funciona...
espero aprender a fazer mais detalhes!!
Obrigado pelo tópico, continue assim!
espero aprender a fazer mais detalhes!!
Obrigado pelo tópico, continue assim!
dd123- Data de inscrição : 12/04/2010
Reputação : -7
Número de Mensagens : 126
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [Resolvido]Como fazer camera de terceira pessoa?
» voltei(pela terceira vez)
» terceira guerra mundial
» Pessoa Esquartejada!
» Engine 3D 3ª Pessoa
» voltei(pela terceira vez)
» terceira guerra mundial
» Pessoa Esquartejada!
» Engine 3D 3ª Pessoa
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|