[TUTO]Criando FP

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[TUTO]Criando FP

Mensagem por Salathiel em Dom 19 Dez 2010, 22:23

Nome: Criando FP (first personal).

Descrição: Tuto baseado na engine de FPS da YoYo-Games.

Nível de dificuldade: mediano.

Requerimentos:
GM 8 Pro.

Primeiro de tudo você precisa de 3 texturas, o chão, a parece e o teto. Fiz o upload da engine que eu tenho.

http://img543.imageshack.us/i/teto.png/

http://img502.imageshack.us/i/parede.png/

http://img408.imageshack.us/i/chaoe.png/

Essas imagens tem que ser carregadas na área dos backgrounds.

Agora vamos começar:

Primeiro vamos criar o objeto que vai ser nosso jogador principal.
No creat coloque:

Código:
friction = 0.2;
d3d_start();
d3d_set_hidden(true);
d3d_set_lighting(false);
texture_set_interpolation(true);

Explicando:

Código:
friction = 0.2;

Usamos o friction para o personagem ir parando aos poucos. Aqui você tem que estabelecer um valor baixo. Porque por exemplo nesse casso ele perde 0.2 na velocidade que o evento step acontece.

Código:
d3d_start();

Iniciando modo 3d.

Código:
d3d_set_hidden(true);

Remove as superfície oculta. Serve para melhorar a qualidade das imagens.

Código:
d3d_set_lighting(false);

Aqui desativamos a iluminação.

Código:
texture_set_interpolation(true);

Como a maioria já sabe, essa função melhora a qualidade também.

Pronto, agora vamos fazer a movimentação. No step coloque:

Código:
if keyboard_check(vk_up)    {if (speed < 2) speed = min(2,speed+0.4);}
if keyboard_check(vk_down)  {if (speed > -2) speed = max(-2,speed-0.4);}

if keyboard_check(vk_left)  {direction += 3;}
if keyboard_check(vk_right) {direction -= 3;}

Aqui acho que só preciso explicar essa função min() e max(). min() serve para retornar o valor minimo, e tem capacidade ate para 16 argumentos, no nosso casso só usamos 2 que foi o "2" e o "speed+0.4".
O max() e a mesma coisa que o min() só que ele retorna o valor máximo.

Agora vamos desenhas nossas texturas, no draw coloque:

Código:
d3d_set_projection(x,y,10, x+cos(direction*pi/180),y-sin(direction*pi/180),10, 0,0,1);
draw_set_alpha(1);
draw_set_color(c_white);
d3d_draw_floor(0,0,0,640,480,0,background_get_texture(texture_teto),24,18);
d3d_draw_floor(0,0,32,640,480,32,background_get_texture(texture_chao),16,12);

Código:
d3d_set_projection(x,y,10, x+cos(direction*pi/180),y-sin(direction*pi/180),10, 0,0,1);

Bom aqui não vou explicar toda essa função d3d_set_projection(); acho que o Kabeção tem um tuto que fala sobre ela. Mais usamos do jeito que ela esta ai para fazer um projeção FP.

Código:
draw_set_alpha(1);

Isso aqui serve pra da um alpha nas texturas, mais não é obrigatório.

Código:
draw_set_color(c_white);

Setando a cor branca, isso pode ser usado por exemplo se você for criar uma nevoa (esqueci como e a função xD) ou seja os desenhos do draw agora vão ser na cor branca.

Código:
d3d_draw_floor(0,0,0,640,480,0,background_get_texture(texture_teto),24,18);

Desenhando o teto em toda a room, nesse casso nossa room tem 640 x 480.

Código:
d3d_draw_floor(0,0,32,640,480,32,background_get_texture(texture_chao),16,12);

Aqui estamos desenhando o chão em room de tamanho 640 x 480.

----------

Pronto aqui já temos um resultado, mais ainda vou mostrar como criar as paredes.
Para criar as paredes eu uso um objeto que servirar para todas a paredes, você vai entender mais afrente.

Primeiro temos um objeto para todas as paredes.
Nesse objeto no evento draw coloque:

Código:
d3d_draw_wall(x1,y1,z1,x2,y2,z2,tex,1,1);

Você vai entender porque eu usei variaveis x1,y1... em vez dos valores.

Agora crie outro objeto que sera a parede vertical. Agora em baixo do campo persistent, vá em parent e escolha o objeto que criamos acima (o que serve para todas as paredes). Pronto agora o código do draw do nosso objeto servira para essa parede vertical.
No creat da parede vertical coloque:
Código:

  x1 = x;
  x2 = x;
  y1 = y-16;
  y2 = y+16;
  z1 = 32;
  z2 = 0;
  tex = background_get_texture(texture_parede);

Pronto agora as variáveis do objeto que serve para as paredes já estão declaradas. Escolha um sprite para a parede vertical.

Vamos fazer a mesma coisa na parede horizontal. Não equesa de colocar no parent nosso objeto que serve para as paredes. No creat coloque:
Código:

  x1 = x-16;
  x2 = x+16;
  y1 = y;
  y2 = y;
  z1 = 32;
  z2 = 0;
  tex = background_get_texture(texture_parede);

Pronto agora já temos as duas paredes. Para adicionar as paredes você só precisa (isso me lembrou todo mundo odeia o cris) colocar o objeto da parede vertical ou horizontal, não precisa colocar aquele primeiro objeto que serve para todas as paredes.

Espero que tenham gostado.

Salathiel

Número de Mensagens : 346
Idade : 20
Data de inscrição : 29/05/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://salathiel1337.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [TUTO]Criando FP

Mensagem por donte em Dom 19 Dez 2010, 22:31

Muito bom mais acredito que First person não exista seria só 3D O.o Firt Person significa primeira pessoa e nunca vi FP... bom mais ta muito bom Very Happy usei minhas proprias texturas... deu um pouco de preguiça e só fiz o chão e o teto...

donte

Número de Mensagens : 1164
Idade : 18
Data de inscrição : 22/12/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://nintendocenterbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: [TUTO]Criando FP

Mensagem por Salathiel em Dom 19 Dez 2010, 22:35

donte escreveu:Muito bom mais acredito que First person não exista seria só 3D O.o Firt Person significa primeira pessoa e nunca vi FP... bom mais ta muito bom Very Happy usei minhas proprias texturas... deu um pouco de preguiça e só fiz o chão e o teto...

Geralmente não se usa First person (FP) usa-se mais FPS (first person shooter). Mesmo assim valew pelo comentário.

Salathiel

Número de Mensagens : 346
Idade : 20
Data de inscrição : 29/05/2010
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://salathiel1337.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [TUTO]Criando FP

Mensagem por Conteúdo patrocinado Hoje à(s) 04:09


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

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