Eu sempre quis que o meu computador fosse tão fácil de usar como o meu telefone, o meu desejo foi realizado pois eu já não consigo descobrir como usar o meu telefone.

Tutorial – Jogo em 1º Pessoa em Unity 3D – Parte 3

Continuando…

  • Vamos agora criar os inimigos, na verdade vamos criar um e duplicá-lo.
  • Crie um cubo para ser o inimigo, scale-o até o tamanho que vc achar ideal para o inimigo, adicione o componente rigidBory nele,marque Frezze rotation e  coloque a massa como 90, nos post anteriores mostrei como fazer isto.
  • Crie um novo javaScript, renomei-o para inimigo e cole o código abaixo nele.
//personagem
var personagem : Transform;
//Velocidade do tiro
var velTiro = 150.0;
//Obj bala
var balaObj : GameObject;
//Var para resetar
private var posIni:Vector3;
function Start(){
	//Pega posição para resetar
	posIni = transform.position;
	mudaLado();
	Auto();
}

function reseta(){
	transform.position = posIni;
}
//Se levou um tiro morre
function OnCollisionEnter (collision : Collision)
{
	//Se levou um tiro morre
	if(collision.gameObject.tag == "bala"){
		Destroy(gameObject);
	}
}

function FixedUpdate ()
{
	//Se estiver longe do personagem anda
	var pos = transform.position - personagem.position;
	//print(pos.magnitude);
	if(pos.magnitude > 200)
	transform.Translate(Vector3.forward * Time.deltaTime * 15);
	//Longe do cenario reseta
	if(transform.position.x > 1800 || transform.position.x < 200 || transform.position.z > 1800 || transform.position.z < 200){
		reseta();
	}

}

function mudaLado(){
	while(active){
		//Sorteia um novo lado para andar
		var ladoSorteado = Random.Range(-180,180);
		transform.eulerAngles = Vector3(0, ladoSorteado, 0);
		yield WaitForSeconds(8);
	}

}
function Auto(){
	//Verifica se esta proximo ao jogador, caso sim ele vira para ele e atira
	while(active){
		var pos = transform.position - personagem.position;
		//print(pos.magnitude);
		if(pos.magnitude < 200){

			transform.LookAt(personagem);
			Atira();
		}

		yield WaitForSeconds(Random.Range(0,3));
	}
}

function Atira () {
	//Função que atira no personagem
	var bala = Instantiate(balaObj,transform.position,transform.rotation); //GameObject.CreatePrimitive(PrimitiveType.Sphere);
	bala.tag = "balaIni";
	bala.AddComponent(Rigidbody);
	bala.rigidbody.velocity = (transform.forward * velTiro);
	bala.rigidbody.mass = 1;
}
  • Coloque este script no inimigo que vc criou( cubo ), e nas propriedades (Janela  Inspector ) carregue os parâmtros com os seguintes dados:
  1. Personagem: Arraste o personagem até este campo.
  2. BalaObj: Arraste o Prefab da Bala até este campo.

Agora é só selecionar o inimigo, duplicar ele ( Ctrl+D ) e espalha-lo pelo cenário.

  • Vamos agora criar mais um javaScript, desta vez para controlar a vida do personagem, crie, renomeio para vida e cole o código abaixo:
//Life
private var vida:int = 100;
//Arma para ser retirada quandomorre
var arma : GameObject;
function OnCollisionEnter (collision : Collision)
{
	//Se foi atingido retira vida
	if(collision.gameObject.tag == "balaIni"){
		Destroy(collision.gameObject);
		vida-=10;
		verifica();

	}
}

function verifica(){
	//Verifica se morreu, caso sim reinicia o jogo
	if(vida <= 0){
		gameObject.GetComponent("mov_personagem").enabled = false;
		Destroy(arma);
		yield WaitForSeconds(5);
		Application.LoadLevel(0);

	}
}

function OnGUI ()
{
	//Mostra a vida na tela
	if(vida > 0){
		GUILayout.Label("Vida: "+vida);
	}else{
		GUILayout.Label("Game Over");
	}

}
  • Coloque este script no personagem.
  • No parâmetro arma arraste a arma que esta conectada a Main Camera para que quando o personagem morrer a arma possa ser retirada.
Pronto!
  Se você chegou até aqui ja deve ter o jogo rodando, agora vc pode adicionar mais elementos como som por exemplo ( é só arrastar o som para dentro da janela Project e depois arrastar para o objeto) e outros objetos para cena.
Em breve colocareis as videos aulas deste tutorial.
 Deus te Abençoe!

38 Respostas

  1. eu queria pergunta porqueeeeeeeeeee nao queeeeeeeeee ir maisssssssss o jogoooooooooooooooooooooooooooooooooooooooooooooo muito obrigado

    25/05/2011 às 17:58

    • e eu que vou saber

      25/05/2011 às 17:58

    • Desculpa, não entendi, esta dando erro?

      26/05/2011 às 22:25

    • carlos jhordan

      o meu dá erro de compilação, aparece assim:
      expected.insert a semicolon at the end, como resolver isso ?

      06/12/2012 às 19:57

  2. lucas

    vlw cara! agora eu estou conseguindo criar o meu FPS

    12/07/2011 às 17:56

  3. jackson

    amigo toda vez que eu atiro a esfera fica parada e depis de 5 segundos ela some. ela nao sai do lugar (nao vai para frente ). o que pode estar acontecendo? grato.

    13/08/2011 às 14:32

    • Olá amigo, isto pode estar ocorrendo por que a bala pode estar colidindo com a arma, adicione este comando depois da linha 14 do script arma.
      bala.transform.position.z+=2;

      16/08/2011 às 12:58

  4. Washington

    Ae gente o meu da tando uma especie de bug os bixos e eu devez em quando ficamos flutuando :D. O q tem de errodo aki ?

    18/08/2011 às 15:11

    • Olá, verifique se eles estão com o componente rigidbody corretamente aplicado.

      18/08/2011 às 17:29

      • Reginaldo

        Eu não consigo abrir o script para editalo

        16/07/2012 às 19:59

  5. mateus

    ei meu inimigo nao esta morrendo oque eu faço?

    30/09/2011 às 22:48

  6. gabriel

    to com um problema quanto eu atiro o tiro sobe pra cima
    e depois caai

    28/10/2011 às 1:57

  7. [eu]

    Cara! Coloca o projeto desse jogo para download!
    Eu, por exemplo baixaria ele!
    Tutorial muito top!

    11/11/2011 às 18:14

  8. DANILO

    oi por favor faiz um vídeo como como criar inimigo e colocar para o personagem do bootcamp anda em um carro por favor sou novo nessa aria e queria aprender melhor obrigado

    14/12/2011 às 14:22

  9. gustavoxd12

    Eestou com problema na hora de inserila no cenario, ja coloquei o arquivo no Project, depois arrastei para o cenario, so que quando aperto play nao estou com a arma, e nao estou conseguindo colocar nomes nas tags porque elas esao bloqueadas (lição 2)
    basicamente nao consigo fazer meu personagem segurar a arma nem atirar

    29/12/2011 às 12:41

  10. anderson

    Amigo , segui a programacao toda porem quando dou play o meu inimigo comeca a descer do cenario (ele esta totalmente acima do terreno) outra coisa e que nao consigo atirar , tentei com o botao esquerdo do mouse mais quando eu aperto o botao esquerdo ele sai do jogo e aparece um erro , outra coisa e que quando levo o tiro o meu personagem se afasta muito, chegando ate a cair do terreno, oque eu devo fazer?

    01/01/2012 às 15:19

  11. Eareis olha o meu inimigo e um personagem que eu comprei mais ele não atira olha eu já coloquei o componente rigidbody e o seu Script , mais ele não atira ! 😦

    03/01/2012 às 11:12

  12. anderson

    amigo, fiz toda essa parte e deu certinho, porem gostaria de saber de vc como posso fazer o script para minha arma ja apontar para o inimigo? exemplo oque eu fiz aqui a arma atira normalmente na velocidade que eu determinar so que ela so atira na direcao de Z , se meu inimigo estiver mais para cima ou mais para baixo nao consigo mirar nele o script que usei foi esse

    var velTiro:float;
    function Update () {

    transform.Translate(0,0,velTiro*Time.deltaTime);

    if(transform.position.z < 2){
    Destroy(gameObject);
    }
    }

    outra duvida minha e como fazer o inimigo vir em minha direcao, ao chegar e determinada distancia ele vir correndo em minha direcao e me atirando tem como me ajudar?

    04/01/2012 às 13:26

  13. Matheus :)

    Emerson, meu jogo funfa perfeitamente, o único erro é que quando eu começo a jogar, apenas a arma entra debaixo da terra, mas se subo o cursor do mouse pra cima, ela a parece. O que ta acontecendo??? GRATO! 😀

    13/01/2012 às 20:25

  14. pera ai quero uma resposta
    agente pode fazer um cara de verdade para subistituir aquele cubo idiota?

    24/01/2012 às 17:04

  15. thellyson

    amigo so uma pergunta, quando eu coloco um objeto dentro do unity (por exemplo uma casa) eu vo passando e atravesso a parede da casa. como que eu deixo a parede rigida pra mim nao passar?

    30/01/2012 às 12:26

  16. ME AJUDAAA

    onde acho o rigidBory? Só achei rigidBody OBRIGADO!

    19/02/2012 às 0:27

  17. Unity 3d

    Como Boto Armas Fazer Inimigos E Pessoas Normais??

    22/02/2012 às 13:09

  18. marckk3

    eu modelei eu mesmo uma bala e coloquei o lugar da esfera

    01/03/2012 às 14:37

  19. SIMPLES E SO VC COLOCAR UM IDI DE PAREDE
    VC TEM Q CRIAR ESSE IDI DEPOIS DE CRIALO VA ATE A PASTA ANDE ESTA A CASA
    E ARASTA!!!
    PARA CRIAR E SO TER O SKTCHUP DO GOOGLE
    BLZ!!

    01/03/2012 às 18:48

  20. kevin

    eu queria fazer um jogo de guerra,nao tiro.
    seria com espadas,e eu queria saber se tem um script pra tirar vida se colidir com um objeto(shepre,Cube,Cilynder),como se eles fossem meus inimigos,entende?
    se puder,manda uma resposta ok?

    04/03/2012 às 17:02

  21. luis michel

    manuuuuu nn comsigo mudar o java script criei ele e renome ei mas nn consigo escrever nada la manow ajuda awe cia um vide ensinando desde o começo ou poim bastante prints porfavor ????/§§§§§§§//

    11/03/2012 às 18:58

  22. luis michel

    dexA EU CONSEGUI MUDAR O SCRIPT MAS SE PUDER FAS O VIDE OK

    11/03/2012 às 19:03

  23. sssssssssssss

    inves de fazer a parte 1 pode se usar u caracter criado no blender add um cube e no mesh transforma em arma

    25/03/2012 às 18:25

  24. Vitor

    eae blz?
    to km um problema criei meu fps e to tentando deixalo online
    tirei os inimigos e botel o networkViewer e abrindo o jogo de outro pc mostra dt o otro personagem mas quando eu atiro ele n morre vc poderia me dar uma força ai?
    VLW!!

    19/06/2012 às 23:53

  25. estou fazendo um jogo de paintball e para isso queria que o personagem fosse destruído e nisso saísse o som NEUTRO e a arma levantada para assim dar mais realimso ao jogo. É possível fazer isso no sigle player, ou então só é possível fazer no multiplayer. Queria montar com amigos(multiplayer) e tbm fazer um demo sem eles (fps) para assim testar. Eterna dúvida.

    21/07/2012 às 23:54

  26. lennon

    cara toda ves q eu atiro a bala vai pro lado e nao pra frente

    26/11/2012 às 16:24

  27. paulo abreu

    Toda vez que eu mudo o inimigo para aquele construtor qued vem no unity ele não fica em pé so deitado e só atira se eu colocar no transform o mesmo boneco ai ele atira so que ele cai e atravessa o chão

    26/11/2012 às 21:41

  28. A função de atualização dos movimentos está na função errada. Ao invés de fixedUpted() deve-se usar update(). Todo o código do Unity sobre movimentação deve-se utiliza a update() que roda na GPU. A fixedupdate() é para a parte de física que roda na CPU. O Unity divide o código durante a execução entre a GPU e a CPU para otimizar a performance. As cenas rodam na GPU e a Física road na CPU.

    24/09/2013 às 12:30

  29. leonardo

    cara eu tenho a animaçao walk e eu quero um script para quando eu apertar o W ele vai andar usando a animaçao walk por favor passa ai????///

    22/02/2014 às 21:08

  30. Eduardo rodrigues

    se eu usar no C# funciona?

    24/07/2016 às 0:09

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s