AJUDA COM SCRIPT DE DISPARO
2 participantes
Página 1 de 1
AJUDA COM SCRIPT DE DISPARO
Bom dia galerinha, estou desenvolvendo um jogo de terror e já falei dele um pouco a aqui no forum a mais ou menos 1 ou 2 ano atrás, ouve uns problemas e tive que refazer, mas logo trarei algo sobre ele aqui no forum novamente, mas estou aqui hoje para pedir a ajuda de vocês em 2 problemas que estão acontecendo no jogo, o primeiro é que quando as balas da arma chegam a zero o certo seria parar de atirar, mas não é isso que acontece, a arma continua atirando e fica com a contagem de balas assim como na imagem logo abaixo...
O segundo problema é que quando recarrego as balas da arma ao invés de apenas completar as balas que faltam na arma exemplo: tenho balas na arma e faço 3 disparos, tenho mais 12 reserva e faço o reload, então o certo seria apenas completar as balas da arma adicionando 3 balas da munição reserva, mas ao invés disso as balas reservas estão substituindo das as balas que já estão na arma. Então queria a ajuda de vocês para corrigir esses problemas e se possivel me dar um exemplo de como fica o script completo com as correções, agradeço desde já a todos que puderem ajudar e em breve trago jogo aqui para avaliarem e darem suas opiniões, vlw abraço!!!
Esse é o script:
O segundo problema é que quando recarrego as balas da arma ao invés de apenas completar as balas que faltam na arma exemplo: tenho balas na arma e faço 3 disparos, tenho mais 12 reserva e faço o reload, então o certo seria apenas completar as balas da arma adicionando 3 balas da munição reserva, mas ao invés disso as balas reservas estão substituindo das as balas que já estão na arma. Então queria a ajuda de vocês para corrigir esses problemas e se possivel me dar um exemplo de como fica o script completo com as correções, agradeço desde já a todos que puderem ajudar e em breve trago jogo aqui para avaliarem e darem suas opiniões, vlw abraço!!!
Esse é o script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Disparo : MonoBehaviour {
//SONS E EFEITOS DE DISPARO INICIO
public GameObject HitAcertado;
public GameObject EfeitoDisparo;
public GameObject BuracoParede;
GameObject Buraco;
public float Distancia;
float TempoDisparo;
[SerializeField]
float _velocidade;
RaycastHit hit;
public AudioClip somDisparo;
//SONS E EFEITOS DE DISPARO FINAL
//ANIMÃÇÕES E SISTEMA DE MUNIÇÕES - INICIO
public Text Recarga;
public Text Municao;
Animation _animArma;
[SerializeField]
float velocidadeAnimação;
public int Balas;
public int ComprovarRecarga;
public int Carregador;
//ANIMÃÇÕES E SISTEMA DE MUNIÇÕES - FINAL
//INICIO FUNÇÃO ATIRAR
public Vector3 Inicial;
public Vector3 Atirar;
float mirar = 8;
//FINAL FUNÇÃO ATIRAR
void Start () {
_animArma = GetComponent<Animation>();
HitAcertado.SetActive (false);
EfeitoDisparo.SetActive (false);
}
void Update () {
Municao.text = Balas.ToString();
Recarga.text = Carregador.ToString();
if (Input.GetButton("Fire1") && !_animArma.IsPlaying("reload"))
{
Municao.text = Balas.ToString();
TempoDisparo += Time.deltaTime;
if (TempoDisparo >= _velocidade && Balas >= 1)
{
_animArma["fire"].speed = velocidadeAnimação;
_animArma.Play("fire", PlayMode.StopAll);
EfeitoDisparo.SetActive(true);
Camera.main.GetComponent<AudioSource>().PlayOneShot(somDisparo, 0.5f);
Balas -= 1;
Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
if(Physics.Raycast (ray, out hit, Distancia))
{
if(hit.collider.gameObject.tag == "Terra")
{
Buraco = Instantiate (BuracoParede, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal)) as GameObject;
Debug.Log("Acertou a parede");
HitAcertado.SetActive(true);
}
}
TempoDisparo = 0;
Invoke("efeito", 0.1f);
Destroy(Buraco, 3f);
}
}
if (Balas == 0 && !_animArma.IsPlaying ("fire"))
{
_animArma["reload"].speed = 1f;
_animArma.Play("reload", PlayMode.StopAll);
Recarregar();
}
if (Input.GetKeyDown (KeyCode.R) && Carregador > 1 && !_animArma.IsPlaying("fire"))
{
Balas = 0;
_animArma["reload"].speed = 1f;
_animArma.Play("reload", PlayMode.StopAll);
Recarregar();
}
if (Input.GetButton("Fire2"))
{
transform.localPosition = Vector3.Lerp(transform.localPosition, Atirar, mirar * Time.deltaTime);
Camera.main.fieldOfView = 40;
}
if (Input.GetButtonUp("Fire2"))
{
transform.localPosition = Inicial;
Camera.main.fieldOfView = 60;
}
}
void Recarregar()
{
Balas += ComprovarRecarga;
Carregador -= ComprovarRecarga;
Municao.text = Balas.ToString();
Recarga.text = Carregador.ToString();
}
void efeito()
{
EfeitoDisparo.SetActive (false);
HitAcertado.SetActive(false);
}
}
Re: AJUDA COM SCRIPT DE DISPARO
Não estou conseguindo mandar a imagem, mas acho q da pra entender o que eu quis dizer
Re: AJUDA COM SCRIPT DE DISPARO
Fiz um video pra mostrar melhor o q quis dizer sobre o problema com a munição, desde já sou grato pela ajuda de todos, Vlw!!!
Seta indica o problema após zerar as balas...
Seta indica o problema após zerar as balas...
Re: AJUDA COM SCRIPT DE DISPARO
Primeiro você precisar ter a quantidade de balas que cabe no pente! sé você subtrair a quantidade máxima de balas com a quantidade de balas que você tem no pente atual você vai ter o valor necessária para carregar sem extrapolar a máxima permitida, depois você pode verificar sé esse valor da subtração é menor ou igual a quantidade de munição que você tem estoque e se você tem munição em estoque!
- Código:
public int clipSize; //tamanho do pente
public int currentClip; //pente/munição atual da arma
public int ammo; //estoque de munição
public void Reload()
{
if(ammo > 0)
{
int need = clipSize - currentClip;
if (need > ammo)
need = ammo;
currentClip += need;
ammo -= need;
}
}
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: AJUDA COM SCRIPT DE DISPARO
Obrigado por responder mano, teria como você me mostrar como ficaria isso que você me mandou no script que postei? Desde já agradeço mais uma vez!!!Weslley escreveu:Primeiro você precisar ter a quantidade de balas que cabe no pente! sé você subtrair a quantidade máxima de balas com a quantidade de balas que você tem no pente atual você vai ter o valor necessária para carregar sem extrapolar a máxima permitida, depois você pode verificar sé esse valor da subtração é menor ou igual a quantidade de munição que você tem estoque e se você tem munição em estoque!
- Código:
public int clipSize; //tamanho do pente
public int currentClip; //pente/munição atual da arma
public int ammo; //estoque de munição
public void Reload()
{
if(ammo > 0)
{
int need = clipSize - currentClip;
if (need > ammo)
need = ammo;
currentClip += need;
ammo -= need;
}
}
Tópicos semelhantes
» Ajuda em Script
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Ajuda com Meu Script
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» [AJUDA]Quero Ajuda poque esse script so da erro!
» Ajuda com Meu Script
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos