[TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
+4
Stipp
ismarspn
rafaelllsd
MatadorLkre
8 participantes
Página 1 de 1
[TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
- Código:
//Criado Por : Lucio Henrique
//Versao 1.0.
//Precisa de um Audio Source.
//Unity 5
//Colocar Na Arma.
using UnityEngine;
using System.Collections;
public class PistolBehaviour : MonoBehaviour {
public BulletBehaviour Bullet; //Bala.
public Transform CanoArma; // De Onde Vai Sair o Tiro.
public ParticleSystem FireParticle; // Particula de Fogo.
public float FireRate = 0.1f; //Tempo Para Arma ATIRAR.
private float currentTimeToFire = 0; //Cronometro.
private bool canFire = true; //Poder ou Nao Atirar.
void Update () {
if (canFire == false) { //Se Pode Atirar for Falso.
currentTimeToFire += Time.deltaTime; //Cronometro Começa A contar.
if(currentTimeToFire > FireRate){ // Se Cronometro For Maior que Tempo para Atira.
currentTimeToFire = 0; //Cronometro vai Zerar.
canFire = true; //Pode Atirar Fica True.
}
}
if (Input.GetButton ("Fire1") && canFire == true){ //Se Aperta Botao Esq. do Mouse.
Instantiate(Bullet, CanoArma.position,CanoArma.rotation); //A Bala vai Sair do CanoArma.
canFire = false; // E Pode Atirar fica False.
FireParticle.Emit (1); //E A Particula Aparece.
GetComponent<AudioSource>().Play(); // E Solta um Audio
}
}
}
- Código:
//Lucio Henrique
//Unity 5
//Colocar na BALA.
using UnityEngine;
using System.Collections;
public class BulletBehaviour : MonoBehaviour {
public float speed = 10; // Velocidade da Bala.
public float TimeToLive = 2; // Tempo que A Bala vai ficar na Cena.
private float currentTimeToLive = 0; //Cronometro.
void Start () {
}
void Update () {
currentTimeToLive += Time.deltaTime; //Cronometro vai Receber o TEMPO.
if (currentTimeToLive > TimeToLive) //Se Cronometro for Maior que Tempo da Bala.
Destroy (gameObject); //Bala Vai Ser Destruida.
transform.Translate (Vector3.forward * speed); //A BALA VAI ANDAR PARA FRENTE
}
}
MatadorLkre- Membro
- PONTOS : 3408
REPUTAÇÃO : 6
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Me ajudou muito, eu tentei fazer um sistema de você tem 30 balas, e quando chega a 0 para de atira, mais infelizmente não consegui, tem algum modo de fazer isto neste script?
rafaelllsd- ProgramadorMaster
- PONTOS : 5243
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
É muito simples, amigo, é só você colocar um int com o tanto de balas que você tem, aí quando esse tanto for igual a 0 é só colocar o "canFire" como false.
ismarspn- Programador
- PONTOS : 4000
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Já fiz isso, mais quando quantBullet chega a 0, ele ainda atira
o script que editei está errado?
- Código:
using UnityEngine;
using System.Collections;
public class PistolBehaviour : MonoBehaviour {
public BulletBehaviour Bullet; //Bala.
public Transform CanoArma; // De Onde Vai Sair o Tiro.
public ParticleSystem FireParticle; // Particula de Fogo.
public int quantBullet;
public float FireRate = 0.1f; //Tempo Para Arma ATIRAR.
private float currentTimeToFire = 0; //Cronometro.
private bool canFire = true; //Poder ou Nao Atirar.
void Start () {
quantBullet = 30;
}
void Update () {
if (canFire == false) { //Se Pode Atirar for Falso.
currentTimeToFire += Time.deltaTime; //Cronometro Começa A contar.
if(currentTimeToFire > FireRate){ // Se Cronometro For Maior que Tempo para Atira.
currentTimeToFire = 0; //Cronometro vai Zerar.
canFire = true; //Pode Atirar Fica True.
}
}
if (Input.GetButton ("Fire1") && canFire == true){ //Se Aperta Botao Esq. do Mouse.
Instantiate(Bullet, CanoArma.position,CanoArma.rotation); //A Bala vai Sair do CanoArma.
canFire = false; // E Pode Atirar fica False.
FireParticle.Emit (1); //E A Particula Aparece.
GetComponent<AudioSource>().Play(); // E Solta um Audio
quantBullet -= 1;
}
if(quantBullet == 0) {
canFire = false;
}
}
}
o script que editei está errado?
rafaelllsd- ProgramadorMaster
- PONTOS : 5243
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Tenta isso:
Agora é só testar e apagar a ultima parte onde ele verifica.
- Código:
if (canFire == false) { //Se Pode Atirar for Falso.
currentTimeToFire += Time.deltaTime; //Cronometro Começa A contar.
if((currentTimeToFire > FireRate) && (quantBullet > 0)){ // Se Cronometro For Maior que Tempo para Atira.
currentTimeToFire = 0; //Cronometro vai Zerar.
canFire = true; //Pode Atirar Fica True.
}
}
Agora é só testar e apagar a ultima parte onde ele verifica.
Stipp- Avançado
- PONTOS : 3641
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
A lógica está errada sim meu caro, veja este trecho do script
Se "canFire" ficou false, você tem um auto ativador para ele, independente de ter balas ainda ou não
- Código:
if (canFire == false) { //Se Pode Atirar for Falso.
currentTimeToFire += Time.deltaTime; //Cronometro Começa A contar.
if(currentTimeToFire > FireRate){ // Se Cronometro For Maior que Tempo para Atira.
currentTimeToFire = 0; //Cronometro vai Zerar.
canFire = true; //Pode Atirar Fica True.
}
}
Se "canFire" ficou false, você tem um auto ativador para ele, independente de ter balas ainda ou não
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Revendo o script, eu consegui, fazer alguma logica e agora está funcionando.
@Edit
Mais surge outro problema, dai o script não respeita o tempo de tiro.
se alguem tiver uma solução.
- Código:
using UnityEngine;
using System.Collections;
public class PistolBehaviour : MonoBehaviour {
public BulletBehaviour Bullet; //Bala.
public Transform CanoArma; // De Onde Vai Sair o Tiro.
public ParticleSystem FireParticle; // Particula de Fogo.
public int quantBullet;
public float FireRate = 0.1f; //Tempo Para Arma ATIRAR.
private float currentTimeToFire = 0; //Cronometro.
private bool canFire = true; //Poder ou Nao Atirar.
void Start () {
quantBullet = 30;
}
void Update () {
if (canFire == true) { //Se Pode Atirar for Falso.
currentTimeToFire += Time.deltaTime; //Cronometro Começa A contar.
if(currentTimeToFire > FireRate){ // Se Cronometro For Maior que Tempo para Atira.
currentTimeToFire = 0; //Cronometro vai Zerar.
canFire = true; //Pode Atirar Fica True.
}
}
if (Input.GetButton ("Fire1") && canFire == true){ //Se Aperta Botao Esq. do Mouse.
Instantiate(Bullet, CanoArma.position,CanoArma.rotation); //A Bala vai Sair do CanoArma.
canFire = true; // E Pode Atirar fica False.
FireParticle.Emit (1); //E A Particula Aparece.
GetComponent<AudioSource>().Play(); // E Solta um Audio
quantBullet -= 1;
}
if(quantBullet == 0) {
canFire = false;
}
}
}
@Edit
Mais surge outro problema, dai o script não respeita o tempo de tiro.
se alguem tiver uma solução.
rafaelllsd- ProgramadorMaster
- PONTOS : 5243
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Cara eu postei a solução lá em cima.
Stipp- Avançado
- PONTOS : 3641
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Obrigado, confundi as resposta.
rafaelllsd- ProgramadorMaster
- PONTOS : 5243
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Meus 2 centavos para o tópico
Fiz uma courotina para destruir a bala, achei melhor do que o sistema atual.
- Código:
using System.Collections;
using UnityEngine;
public class BulletBehavior : MonoBehaviour
{
public float speed = 10f;
private void Start()
{
StartCoroutine(timeBulletAlive());
}
private IEnumerator timeBulletAlive()
{
yield return new WaitForSeconds(2);
Destroy(gameObject);
}
void Update ()
{
transform.Translate(Vector3.forward * Time.deltaTime * speed); //A BALA VAI ANDAR PARA FRENTE
}
}
Fiz uma courotina para destruir a bala, achei melhor do que o sistema atual.
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
- Código:
using System.Collections;
using UnityEngine;
public class BulletBehavior : MonoBehaviour
{
public float speed = 10f;
private void Start(){
Destroy(gameObject,2);
}
void Update ()
{
transform.Translate(Vector3.forward * Time.deltaTime * speed); //A BALA VAI ANDAR PARA FRENTE
}
}
Phph09- Profissional
- PONTOS : 3790
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Bem melhorPhph09 escreveu:
- Código:
using System.Collections;
using UnityEngine;
public class BulletBehavior : MonoBehaviour
{
public float speed = 10f;
private void Start(){
Destroy(gameObject,2);
}
void Update ()
{
transform.Translate(Vector3.forward * Time.deltaTime * speed); //A BALA VAI ANDAR PARA FRENTE
}
}
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
Foi mal aí, mas to precisando de uma ajudinha, fiz um projeto muito simples apenas de atirar e tals, mas quando atiro sai milhares de balas, usei o seguinte script:
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
public class arma : MonoBehaviour
{
public Animation anim;
public GameObject f;
public Transform saida;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(0))
{
anim.Play("New Animation");
Instantiate(f, transform.position, transform.rotation);
waitToFirerate = 100;
}
}
}
Me fale oque tenho que mudar para sair apenas uma "bala" por vez, desde já agradeço
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
public class arma : MonoBehaviour
{
public Animation anim;
public GameObject f;
public Transform saida;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(0))
{
anim.Play("New Animation");
Instantiate(f, transform.position, transform.rotation);
waitToFirerate = 100;
}
}
}
Me fale oque tenho que mudar para sair apenas uma "bala" por vez, desde já agradeço
mericu- Iniciante
- PONTOS : 1498
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Como Fazer (Arma e Bala) Para Jogo De FPS
mericu escreveu:Foi mal aí, mas to precisando de uma ajudinha, fiz um projeto muito simples apenas de atirar e tals, mas quando atiro sai milhares de balas, usei o seguinte script:
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
public class arma : MonoBehaviour
{
public Animation anim;
public GameObject f;
public Transform saida;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButton(0))
{
anim.Play("New Animation");
Instantiate(f, transform.position, transform.rotation);
waitToFirerate = 100;
}
}
}
Me fale oque tenho que mudar para sair apenas uma "bala" por vez, desde já agradeço
Quando vc coloca
- Código:
if (Input.GetMouseButton(0))
Quer dizer que a ação vai ocorrer enquanto o botão do mouse estiver segurado, por isso sai milhares de balas, pois para o jogo mesmo se vc der apenas 1 click, dentro do frame que vc apertou, ele vai criar uma bala para cara frame.
Substitua por
- Código:
if(Input.GetMouseButtonDown(0))
Desta forma ele vai executar a ação apenas 1 vez
Tópicos semelhantes
» [TUTORIAL] Como fazer sistema de Carretas para Caminhões
» como fazer para arma se movimentar junto com o player
» [pedido de tutorial] como fazer um jogo 2d
» [TUTORIAL] Como fazer o registro completo do seu jogo
» [TUTORIAL] - Como fazer download da OBB do jogo, in-game! (Android)
» como fazer para arma se movimentar junto com o player
» [pedido de tutorial] como fazer um jogo 2d
» [TUTORIAL] Como fazer o registro completo do seu jogo
» [TUTORIAL] - Como fazer download da OBB do jogo, in-game! (Android)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos