Você está na página 1de 10

Criando um First Person Shooter (FPS) Parte 1

Autor: Graham McAllister Revisado por: Jeff & Aydelotte Amir Ebrahimi Tempo para completar: 34 Horas

ltima Reviso: 10July2009

Contedo
1. Parte 1: Introduo

Pr-requisitos ......................................................................................................................3 Iniciando um novo projeto ..................................................................................................3 Configurando o ambiente do jogo .......................................................................................4 Adicionando o personagem principal ..................................................................................4 Adicionando uma arma .......................................................................................................5 Criar o objeto Missile ..........................................................................................................6 exploses de msseis .........................................................................................................10 Os efeitos sonoros .............................................................................................................13 Adicionando uma GUI ......................................................................................................13 Fsica(Physics) ..................................................................................................................15 Agradecimentos ................................................................................................................19

Parte 1: Introduo

Este tutorial ir detalhar como para fazer um simples primeiro lugar Person Shooter (FPS). vai introduzir 3D fundamentais programao de jogos conceitos e dar dicas sobre como pensar como um programador De jogos.

Pr-requisitos Este tutorial assume que voc esteja familiarizado com a interface de Unidade e de script bsica conceitos. Iniciando um novo projeto Baixar FPS_Tutorial.zip,

unzip, e abrir a pasta do projeto Em Unidade.

Importar o padro

Pacote de ativos da Unidade a partir do seu Pacotes padro Unidade pasta onde est instalado.

Depois de importar, voc vai Unidade de ver construdo no "Standard Ativos "no Projeto Painel. Quando ns criamos novos ativos, melhor coloc-los em pastas queagrup-los acordo com sua funo, por exemplo, Foguete, exploso de udio, etc

Configurando o ambiente do jogo


Uma vez que os bens foram importados, voc vai notar que h muitas pastas no Projeto painel.

No painel Projetos, selecione o mainLevelMesh de objetos / mainLevelMesh / mainLevelMesh No painel Inspector, dentro das opes FBXImporter voc encontrar o Generate Aceleradores de opo ". Alternar essa opo por diante. Se no fizermos isso, o jogador simplesmente cair at o nvel (sem coliso). Arraste o mainLevelMesh na cena.

No h necessidade de acrescentar uma luz para a cena, o nvel j est totalmente lightmapped. O nvel importado usa lightmaps para toda a iluminao que nos permite usarprebaked sombras. Lightmaps so muito bons para o desempenho, especialmente se voc deseja criar um instalao de iluminao complexas. Agora voc est pronto para adicionar um personagem no meio ambiente.

Adicionando o personagem principal


Estamos indo agora para adicionar em um personagem para o jogador controle.Unidade foi construda em um prefab especificamente para um firstperson controlador. Isto pode ser encontrado no painel Project no Ativo simples> Casas pr-fabricadas. Para adicionar o controlador de Primeira Pessoa, clique na seta ao lado AtivosPadro em o painel Projeto, como lista de activos ir aparecer. Localize a pasta chamadaPrefabs e clique na seta no lado esquerdo. Voc deve ver agora a primeira pessoa ativos do controlador. Arrast-lo para o ponto de vista de cena.

Voc dever ver um objeto cilindro que representa o jogador, trs setas grandes para alterar a localizao no espao 3D para o objeto (se voc no v trs setas, em seguida, pressione a tecla 'W'), e uma malha branca, que mostra viewport do objeto (onde ele est olhando). O Controlador de FPS agora o padro da cmera, movendo-se este objeto, voc muda a viso atual na visualizao do jogo. Voc tambm notar que o controlador de FPS tem um cone de cmera em cima dela. Mover o personagem para que est acima do nvel do solo no meio ambiente. Como no temos mais nenhuma necessidade para a cmera principal, voc pode exclu-lo.

aperte Play, agora voc deve ser capaz de se mover em torno do nvel usando o mouse e teclado (teclas do cursor para mover ou W, A, S, D).

Voc j criou um FPS muito simples, vamos dar ao jogador uma arma.

Adicionando uma arma


Estamos indo agora para dar ao jogador um objeto do tipo granada para jogar no meio ambiente. Para fazer isso, voc ter que criar alguns Javascript para dizer sobre o comportamento da Unidade da arma. Ento o que ns queremos fazer? Queremos permitir que o jogador para atiraronde a cmera est apontando. No entanto, vamos primeiro pensar na nossa personagem de jogo e suas armas. Nosso personagem do jogo visto atravs da viso em primeira pessoa, com a cmera posicionada ao nvel dos olhos. Se o jogador dispara uma arma, a arma deve ser lanado a partir de onde as mos so, no a partir do nvel dos olhos. Isso significa que temos de acrescentar em um objeto de jogo para representar o lanador de granadas, e coloclo onde a mo do jogadorseria quando tm estas armas. Isso garante que o objeto incndios da correta localizao.

Criar o lanador de arma

Primeiro, vamos adicionar um objeto de jogo para representar o lanador de granadas. Um objeto de jogo qualquer item no mundo 3D (player, nvel, sons), os componentes so as propriedades que o objeto jogo tem. Portanto voc aplicar componentes para objetos do jogo. Da principal GameObject selecione Menu> Criar vazio, e renomear o objeto para "Launcher" no painel Hierarchy. Note, esse objeto invisvel como ela e objeto vazio, no entanto, apenas um espao reservado para o nosso lanador de msseis.

Agora vamos chegar a perto de nosso controlador FPS para que possamos ver onde posicionar o lanador de arma. Selecione o controlador FPS no painel de hierarquia e garantir que o cursor Ver sobre o Cena, 'F' de imprensa (frame selecionado). Esta concentra-nos no jogador (o atualmente selecionado item). Agora selecione o lanador do Painel de hierarquia e escolha Objeto do jogo> Mover-se para ver a partir do menu principal. Observe como o Lanador objeto agora colocado perto do Controlador FPS. Podemos agora usar as alas para coloque o lanador de aproximadamente onde as mos devem ser. NOTA Voc pode fazer o personagem para o canhoto ou destro alterando a localizao de este objeto, sem necessidade de alterar qualquer cdigo. Verifique se o seu layout de janela Unidade est no modo de 2 por 3 (Janela> layouts> 2 por 3), e pressione o boto Play. Faa Lanador est selecionado na hierarquia Ver e ao mesmo tempo assistindo a cena viso, mover o personagem ao redor. voc perceber que nosso objeto lanador no se move com o nosso personagem (voc pode pressionar Jogar para parar o jogo a correr agora). Para resolver este problema arrastar o objeto para o objeto Lanador Cmera Principal que pertence ao Controlador FPS no painel Hierarchy. bom para quebrar o Conexo pr-fabricados. Agora execute o jogo novamente e ver a vista de cena, a Lanador deve agora avanar com o nosso carter. Ns temos associados a Lanador objeto jogo com um objeto que se move em todos os 3 eixos (a cmera).

Criar o objeto Missile


Vamos criar o mssil que ser lanada quando o usurio clica no boto de fogo. Por agora vamos usar algo simples, uma esfera. Criar um objeto novo prefab Clicando sobre os Ativos> criar> Prefab da barra de menu Unidade, e renome-lo para Msseis. Agora crie uma esfera (GameObject> Crie Outros> Esfera). Agora arraste o objeto do jogo Sphere partir do Painel de Hierarquia para o Missile prefab no Painel de Projetos. O cone para o prefab vai agora mudar. voc pode excluir o objeto da Esfera Ver Hierarquia. DICA Qualquer objeto jogo que voc sabe que vai precisar instanciar em tempo de execuo deveria geralmente ser um pr-fabricada.

Escrever o cdigo lanador de msseis


O Controlador de FPS um pr-fabricada composta de objeto do jogo e vrioscomponentes. O FPS Controlador em si uma malha cilndrica que s gira em torno do yaxis, Ento, se ns anexar o cdigo lanador (script) para isso, ento no ser capaz de atirar para cima e para baixo. Portanto, vamos anexar o nosso cdigo lanador para a cmera principal dentro da FPS Controlador como a cmera pode olhar em qualquer direo. Vamos criar o nosso cdigo Javascript primeira que ir descrever o comportamento do Launcher. Selecione Ativos> criar> JavaScript, o que cria um documento em branco Javascript. Um novo activo exibido no painel intitulado Projeto NewBehaviourScript. renomear esse script para MissileLauncher. DICA Voc pode especificar qual editor de cdigo externo que voc deseja Unidade de usar, clicando em sobre a Unidade> Preferncias, em seguida, selecionando a caixa de Editor Externo Script. Crie um novo diretrio dentro do seu Projeto denominado Ver WeaponScripts, vamos colocar todos os nossos scripts armas aqui. Mover o seu javascript para MissileLauncher aqui, e mova o prefab Missile tambm. Vamos ter um olhar para o Javascript completa para MissileLauncher. Voc pode digitar o sees de cdigo que voc siga. Pensando a partir de um nvel elevado, o que queremos fazer? Bem, queremos detectar quando o usurio tenha atingido o boto de fogo, em seguida, instanciar um novo mssil, e lan-lo com um certa velocidade em direo onde o usurio estava apontando. Vamos examinar o cdigo em detalhes: var projectile : Rigidbody; var speed = 20; function Update() {

Este o comeo do script, que define a propriedades e declara uma funo chamada Update. if( Input.GetButtonDown( "Fire1" ) )

Primeiro queremos verificar quando o usurio pressiona o boto de fogo. "Fire1" mapeado para ambos o boto esquerdo do mouse ea configurao de teclado atual (o que pode ser editado

de Editor de menu> Configuraes do projeto> Entrada).

{ var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation );

Declaramos uma varivel para armazenar uma referncia para o objeto instanciado. O tipo deste varivel Rigidbody, isso ocorre porque o mssil deve ter um comportamento fsica.

Para instanciar um objeto na Unidade, usamos a funo Instanciar com trs parmetros, o objeto para criar uma instncia, a posio 3D do que deve ser criado no, e os rotao do objeto deve ter. H tambm um outro construtor, verifique a API guia, mas vamos usar este por enquanto.

O primeiro parmetro, projtil, o objeto que deseja criar. Ento, o que projtil de qualquer maneira? O projtil definido por voc dentro do editor. Para permitir que isso acontea, ns declaramos o projtil varivel fora de qualquer funo, o que torna pblico e expe -lo para o editor da Unidade. O objeto projtil poderia ter sido criado no cdigo, no entanto se voc deseja modificar (tweak) uma varivel, melhor fazer isso de dentro da Unidade editor.

O segundo parmetro, Transformar.Posio, cria o projtil na mesma posio no espao 3D como o lanador. Por que o lanador? Bem, o roteiro que estamos criando ser anexado ao lanador por isso, se queremos chegar a nossa posio atual em 3D, Transformar.Posio que d a ns (a palavra-chave transformar acessa o Transform de O objectivo do jogo, onde o script est em anexo).

O terceiro parmetro, transform.rotation, semelhante ao segundo parmetro, a no ser que cria o mssil com as propriedades de rotao igual ao lanador.

instantiatedProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed ) );

A prxima parte do cdigo faz com que a nossa mudana de msseis. Para fazer isso, ns damos a um mssil velocidade, mas em que direo (x, y ou z)? Ver na cena, clique no controlador de FPS, as setas movem aparecer (aperte 'W', se as setas no aparecem), um vermelho, uma

verde, e um azul. Vermelha indica o xaxis, verde denota o yaxis, e azul denota o zaxis. Como o azul est apontando na direo que o jogador est enfrentando, ns queremos para dar aos nossos msseis uma velocidade na zaxis.

Velocity uma propriedade da instantiatedProjectile. Como sabemos isso? Bem instantiatedProjectile, de Rigidbody tipo, e se olharmos para o API, vemos que a velocidade uma propriedade. D uma olhada em algumas das outras propriedades que Rigidbody tem, tambm. para definir a velocidade preciso especificar a velocidade em cada eixo. No entanto, h uma ligeira emisso. Objetos em 3D so especificados usando dois modelos de coordenadas; local e mundial. em locais espao, coordenadas so relativas ao objeto que voc est trabalhando. No espao do mundo, coordenadas so absolutos: at, por exemplo, sempre a mesma direo para todos os objetos. Rigidbody.velocity deve ser especificado no espao do mundo. Assim, ao atribuir a velocidade voc precisa converter a partir do zaxis no espao local (a frente) para seus respectivos mundo direo do espao. Voc faz isso usando o

transform.TransformDirection funo que leva um Vector3 como um argumento. A velocidade varivel tambm est exposta, para que possamos ajust-lo no editor.

Physics.IgnoreCollision (instantiatedProjectile. colisor, transform.root.collider); } } Aqui est o cdigo completo para MissileLauncher.js:

var projectile : Rigidbody; var speed = 20; function Update() { if( Input.GetButtonDown( "Fire1" ) ) { var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation ); instantiatedProjectile.velocity = transform.TransformDirection( Vector3( 0, 0, speed ) ); Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider ); } }

Inserir o cdigo descrito em Javascript MissileLauncher e salv-lo.

Anexar o script MissileLauncher ao Iniciador no Controlador de FPS. voc pode confirmar que o script MissileLauncher est agora conectado ao Iniciador, selecionando Lanador-lo no Ver Hierarquia e verificar que o MissileLauncher script mostrado no painel Inspector.

O pr-fabricada de msseis que ns criamos anteriormente no tem sido associada com o projtil varivel em nosso script, ento devemos fazer isso dentro do editor. A varivel projtil de tipo Rigidbody, ento primeiro temos que garantir que os nossos msseis tem um anexo Rigidbody.

Você também pode gostar