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 2

Continuando…

  • Vamos agora inserir a arma, para isto simplesmente arasste-o para a janela Project, caso você não tenha uma arma vc pode baixar a que usei, clique aqui , primeiro importe a textura e depois o objeto.
  • Adicione-o junto a Main Camera e posicione-o com os seguintes parametros do Transform:  position(0,-3.3,0.9),rotation(86.2,173.1,83.8) e Scale(0.2,0.2,0.2) .
  • Crie um cubo e adicione a arma, coloque na ponta da arma, deixe o rotation como (0,90,0) e a Scale como 1 .
  • Crie um novo TAG, para isto selecione o cubo, vá na janela Inspector, clique em Tags ( fica em cima dos campos do Transform) e AddTag, na janela que abrie clique em Tags e coloque size como 2 e nos elementos crie as Tags bala e balaIni, veja a imagem abaixo:
  • Crie um novo JavaScript , renomeio como arma e clique dias vezes nele para editá-lo.
  • Copie e cole o código abaixo.
//Velocidade do tiro

var velTiro = 150.0;
 //Bala
 var balaObj : GameObject;

function Atira () {
 //Cria a bala, adiciona fisica e aplica velocidade
 var bala = Instantiate(balaObj,transform.position,transform.rotation); //GameObject.CreatePrimitive(PrimitiveType.Sphere);
 bala.tag = "bala";
 //bala.transform.parent = transform;
 bala.AddComponent(Rigidbody);
 bala.transform.position = transform.position;
 bala.transform.rotation= transform.rotation;
 //bala.transform.localScale= Vector3(0.1,0.1,0.1);
 bala.rigidbody.velocity = transform.forward * velTiro*-1;
 bala.rigidbody.mass = 1;
 //toca o som do tiro
 audio.Play();
 }

function Update () {
 //Atira quando aperta o botão correspondente
 if (Input.GetButtonDown("Fire1")) {
 Atira();
 }
 }
  • Adicione o escript ao cubo na ponta da arma
  • Crie uma esfera, scala para .1 e adicione a particula Fire1 nela, é só arrastar e soltar para a sphere.

  • Crie um novo javascript para retirar a bala da cena e aplique a bala(esfera).
  • Renomeie este Script para mataBala e edite-o.
  • Copie e código o código abaixo:
function Start () {
	meMate();
}

function meMate(){
	//Mata a bala depois de 5 segundos que ela foi criada
	yield WaitForSeconds(5);
	Destroy(gameObject);

}

  • Crie um Prefab (Asset/Create/Prefab) e adicione a efera, para isto arraste a esfera até o Prefab criado, meu prefab eu chamei de  bala.
  • Arraste o prefab criado para o campo balaObj do componente cubo que vc colocou na ponta da arma.
Agora de um Play e teste, o jogo deverá estar funcionando a função de atirar.
No próximo post colocaremos os inimigos.


58 Respostas

  1. iaê kra, eu to com um problema, na ultima imagem deste post no script vc colocou tiro, mas vc não mostra este script, poderia mostra-lo?

    01/07/2011 às 11:44

    • opa, ja concertei aki, a arma está atirando agora 😀

      01/07/2011 às 12:04

      • ok.

        02/07/2011 às 16:12

      • O que vc fez cara? eu nao conseguir v o tiro

        30/08/2011 às 23:36

      • o tutorial acima n pega pq?

        03/01/2012 às 22:30

  2. douglas

    estou tendo dificuldades para adicionar a arma onde fica a arma para que eu arraste ela para a janela project? como adicionar a arma que você disponibilizou para download? obrigado

    06/08/2011 às 21:30

  3. estou com duvida no passo 3, por que o unity aqui faz com que o cubo seja maior que o cano da metralhadora, e ele anda pro lado até cair, por favor não sei o que acontece, abraços

    07/08/2011 às 17:27

    • paulo abreu

      vc pode deixar menor o cubo ou deixar no cubo no meio da tela para servir de mira igual eu fiz

      26/11/2012 às 17:43

  4. Olá, você deve randomizar o cubo até que ele fique de um tamanho bom para ficar posicionado na ponta da arma, sobre andar, verifique se existe algum erro nos códigos do script mov_personagem, ele deve estar exatamente assim:

    //Velocidade do Personagem

    var vel = 10.0;

    //Lados

    private var lado:float = 0;

    private var ladoV:float = 0;

    function Update () {

    //Vira a posição conforme o mouse

    lado+= (Time.deltaTime * vel * Input.GetAxis(“Mouse X”) * 5);

    ladoV-= (Time.deltaTime * vel * Input.GetAxis(“Mouse Y”) * 5);

    transform.eulerAngles = Vector3(ladoV, lado, 0);

    //Anda sempre para frente e para o lado

    transform.Translate(Vector3.forward * ((Time.deltaTime *vel) * Input.GetAxis(“Vertical”)));

    transform.Translate(Vector3.right * ((Time.deltaTime *vel) * Input.GetAxis(“Horizontal”)));

    }

    08/08/2011 às 14:45

    • joao

      Cara eu fiz isso e da o erro q diz q precisa de ponto o meu unity é o 3.4 pro me ajuda plx

      20/07/2012 às 1:57

  5. douglas

    olá amigo estou com mais uma dúvida, a esfera não fica junto do cano da arma, ela fica abaixo do cenário, sendo assim o fogo não sai na ponta da arma, mas sim onde a esfera está, como faço para resolver esse problema?? obrigado

    08/08/2011 às 21:29

  6. douglas

    olá amigo, eu resolvi o problema da esfera, mas eu também estou com o problema de o personagem andar de lado, eu até retirei o mov_ personagem, mas ele continua andando de lado, não sei o que pode ser, se você puder me ajudar
    obs: já tentei colocar os controles do mov_ personagem da maneira que você ensinou nos comentários, mas não adiantou

    08/08/2011 às 21:46

    • paulo abreu

      deve ser por causa da arma, mais e simples click na sua arma e vai la no inspector depois vc caça o box collide e depois click com o botão direito do mouse e depois remover componente.

      26/11/2012 às 17:46

  7. Na verdade eu uso minha própria programação da movimentação, e desculpa pelo li um comentário do post da parte 1 e resolveu meu problema, muito agradecido.

    08/08/2011 às 22:41

    • douglas

      olá wesley, será que você poderia me passar sua programação de movimentação?? eu também estou com o problema na movimentação do personagem, ele fica andando pro lado, se puder passar eu agradeço mto, vlws

      09/08/2011 às 0:09

      • Olá, caso queira você pode usar o componente de movimentação que vem junto com o Unity,selecione o personagem e vá em Component/character/FPS Input Controler, será automaticamente criado todo o controle para seu personagem.

        09/08/2011 às 11:28

  8. Desculpa aquela minha programação estava bem bugada, utilizo agora o Componente Character Controller porém me lembro de alguns códigos, você pode dar uma estudada:

    // Quando aperta “alguma tecla” “Alguma Função” Acontece.
    If (Input.GetButton(“Alguma Tecla”)) {/* Alguma Função */}

    Funções: transform.position, transform.foward, transform.eulerAngles.y ou x, moveSpeed e Turnspeed, Time.deltaTime…

    é bem simples porém não lembro como armei o script (existe algumas variáveis descartáveis mas não lembro muito bem) não espero que ajude mas já vale a intenção…

    11/08/2011 às 15:54

  9. Henrique

    ñ ta funcionando amigo ajuda ai

    18/08/2011 às 1:38

    • Qual o problema?Onde não está conseguindo

      18/08/2011 às 11:22

  10. Eu fiz tudo o que pede, acho que errei em alguma coisa, porque olha o print.
    Quando eu vou tentar o jogo fica assim. Na onde eu errei ?

    28/08/2011 às 17:17

    • marckk3

      depois que vc coloca o “prefab” no campo de bala object vc pode excluir a esfera do campo !

      16/04/2012 às 23:16

  11. Olá, pela sua imagem percebi que vc está com 2 AudioListeners, o que significa que vc colocou 2 câmeras na cena, verifique se vc não esta ativando a câmera errada, no tutorial usa apenas 1 câmera.

    29/08/2011 às 11:18

  12. Thais

    nao consigo achar o post da parte 1 onde esta?

    15/09/2011 às 17:07

  13. David

    Amigo eu coloco o carinha e a arma la certinho, mas quando dou play ele funciona perfeitamente não cai do cenario nem nada, ja coloquei o cube colider, mas quando aponto mas ele atravessa qualquer parede e se eu quiser atravessa o chão tbm, parece que ta flutuando no meio do cenario da uma ajuda ai manin, grato!

    24/10/2011 às 1:40

  14. gabriel

    Alguem consegue resolver meu problema as balas não voam elas fikam parada no ar???

    q erro e esse

    27/10/2011 às 5:29

  15. guilherme

    nao consigo por a arma ,pois quando crio o script,ele da erro,
    me ajude por favor

    31/10/2011 às 16:49

  16. [eu]

    Cara, coloca esse jogo ai para download

    06/11/2011 às 0:39

  17. Emerson Voc~E depois podia ensinar a fazer um jogo esportivo

    16/11/2011 às 12:26

    • Tenho interesse mas Infelizmenmte estou sem tempo, assim que puder continuo com os tutos.

      17/11/2011 às 13:38

  18. Matheus :)

    Emerson, to com um problema! quando descolo meu personagem e atiro, a bala nao sai da arma, e sim do local de origem da esfera! me ajuda PF! 😀 GRATO!

    14/01/2012 às 19:25

  19. junior

    cara quando eu atiro o jogo da pause porque você pode me ajudar?

    26/01/2012 às 15:46

    • marckk3

      cara é por que tem erros no seu game! … se vc não souber engles vai no “google tradutor” e traduz os erros . e concerte tudo!!!

      16/04/2012 às 20:56

  20. junior

    a deu eu eu so modifiquei o script na parte do som e arrumo

    26/01/2012 às 15:49

    • marckk3

      tbm aconteceu comigo!!!

      16/04/2012 às 20:55

  21. Vinicius

    Me Ajuda , eu fiz tudo certo , mais quando eu atiro a bala não vai longe ,ela cai perto de mim,olha o print

    03/02/2012 às 12:03

    • marckk3

      clika no “cube”, que está na ponta da arma e vai no escript “arma” … e coloca “200” em vel bala.

      16/04/2012 às 20:54

  22. Lucas

    Oi Sou Lucas !!! Quero Sabe Como Cria Uma Esfera??? E Como eu Coloco O Cubo Na Boca Da Arma Pq Naum Ta Dando Já Tetendei de Varias Formas !!!

    Dez De já Agradeço

    by:Killestem ;-D

    09/02/2012 às 18:41

    • marckk3

      aff cara … game object –: sphere … game object,cube…

      16/04/2012 às 20:52

  23. Gabriel Silveira

    Tem um erro comigo a bala esta saido para o lado! me ajude!

    09/02/2012 às 22:03

  24. Marcos

    Bom galera eu to fazendo um jogo aqui mas quando eu vo colocar a arma pra grudar no personagem (char) não gruda me expliquem.vlw ja consegui importa o arquivo da ak-47 =)

    ———————QUEM SABER O PROBLEMA ME AVISE—————————–
    VLW

    25/03/2012 às 23:18

    • marckk3

      cara para posicionar eu somente coloquei a arma no meu personagem e angulei a arma …
      ou seja ,arraste o ak-47 para o seu personagem na janela “hieraci”,(eu acho que se escreve assim msm).
      e ajuste sua arma no personagem.!

      16/04/2012 às 20:47

  25. marckk3

    cara eu modelei e animei meu personagem e eu posicionei uma m4 em mãos, uma p 90 , e cara vlw pelo seu tutorial msm !!!! 🙂

    16/04/2012 às 20:44

  26. marckk3

    cara eu modelei o “bart simpsom” e o animei e coloquei uma mini gun na mão dele.
    kkkk
    ficou mto loko .

    16/04/2012 às 20:58

  27. PC7

    Cara o seu tutorial é muito bom. Porem, eu não consigo fazer o personadem atirar ja fiz tudo o que esta nele umas 3 vezes, cara não sei, mais acho que é por causa da minha versão do Unity (eu uso duas vesões a 3.4.2, se eu não me engano, ea 3.5,1). cara me da uma ajuda ai. Vlw e muito obrigado!

    29/04/2012 às 14:46

  28. Mariana

    eu não consigo baixar a arma. Alguem pode me ajudar?

    24/09/2012 às 1:38

  29. daniel

    ola gente eu to criando o game primeira pessoua
    entao eu ja tenho os script para andar atirar e outros
    bomo como eu baixo animaçao e o script para recarregar a arma

    20/10/2012 às 22:24

  30. Ola eu quero criar a fisica da água no game pf me ajuda entre em contato face https://www.facebook.com/ericlescoringa

    26/11/2012 às 15:48

  31. kennedy

    Ola a sua arma n esta disponível para download. ..error 404

    19/11/2013 às 17:23

  32. lucas

    man minha bala atira mais sai uma esfera grande e depois quando eu tento atirar outra vez ele não sai como se tivesse se chocando com meu personagem como eu ajeito isso ?

    26/12/2013 às 13:13

  33. lucas

    ai pode deixar consegui ajeitar agora esta atirando. mais amigo só tem um problema as vezes eu atiro a bala sai de lado como eu posso ajeitar.

    26/12/2013 às 13:59

  34. lucas

    amigo agora eu quero saber como coloco mira ?

    26/12/2013 às 14:52

  35. Pablo

    Minha bala esta saindo pro lado como ajeito

    24/10/2015 às 0:39

  36. richerd vieira

    oi , viu eu sou Richerd Vieira procura la no facebook, mas o script que vc fez não funciona pro unity 5, então eu apague algumas coisas, dai fico assim.
    #pragma strict
    //Velocidade do tiro

    var velTiro = 150.0;
    //Bala
    var balaObj : GameObject;
    var GameObject;

    function Atira () {
    //Cria a bala, adiciona fisica e aplica velocidade
    var bala = Instantiate(balaObj,transform.position,transform.rotation); //GameObject.CreatePrimitive(PrimitiveType.Sphere);
    bala.tag = “bala”;
    //bala.transform.parent = transform;
    bala.AddComponent(Rigidbody);
    bala.transform.position = transform.position;
    bala.transform.rotation= transform.rotation;
    //bala.transform.localScale= Vector3(0.1,0.1,0.1);
    //toca o som do tiro
    }

    function Update () {
    //Atira quando aperta o botão correspondente
    if (Input.GetButtonDown(“Fire1”)) {
    Atira();
    }
    }

    29/08/2016 às 21:47

Deixar mensagem para douglas Cancelar resposta