1
resposta

Balas não se "destroem"

Olá! Estou tendo um problema com minhas balas. Apesar do meu código estar praticamente idêntico ao script de referência da aula, minhas balas quando disparadas no jogo não se "destroem" (voltam para a reserva), elas permanecem no jogo "andando para frente" até o infinito. Como resolvo isso? Tenho que mudar por código algo no transform das balas?

Seguem os trechos dos meus scripts:

Bala

private void OnTriggerEnter(Collider objetoDeColisao){

        Quaternion rotacaoOpostaABala = Quaternion.LookRotation(-transform.forward);
        switch (objetoDeColisao.tag){


                case "Inimigo":
                    ControlaZumbi inimigo = objetoDeColisao.GetComponent<ControlaZumbi>();
                    inimigo.TomarDano(DanoDoTiro);
                    inimigo.ParticulaSangue(transform.position, rotacaoOpostaABala);
                break;

                case "Chefe":
                    ControlaChefe chefe = objetoDeColisao.GetComponent<ControlaChefe>();
                    chefe.TomarDano(DanoDoTiro);
                    chefe.ParticulaSangue(transform.position, rotacaoOpostaABala);
                break;
        }
        VoltarParaReserva(); //JÁ MUDEI ESSA PARTE PARA COMO ESTÁ NO SCRIPT DA AULA E NADA MUDOU
    }


    public void VoltarParaReserva(){

        this.reserva.DevolverObjeto(this.gameObject);
    }

    public void AoEntrarNaReserva(){
            this.gameObject.SetActive(false);
        }

    public void AoSairDaReserva(){
        this.gameObject.SetActive(true);
    }

ControleDaArma

public class ControlaArma : MonoBehaviour
{

    [SerializeField]
    private ReservaFixa reserva;
    public GameObject CanoDaArma; //Feita para pegarmos as infos do cano
    public AudioClip SomDeTiro;



    // Update is called once per frame
    void Update()
    {
        if(Input.GetButtonDown("Fire1")){
            this.Atirar();
            ControlaAudio.instancia.PlayOneShot(SomDeTiro);
        }

    }

    private void Atirar(){

        if(this.reserva.TemObjeto()){
            Vector3 posicaoDeCriacao = CanoDaArma.transform.position;
            Quaternion rotacaoDeCriacao = CanoDaArma.transform.rotation;
            GameObject bala = this.reserva.PegarObjeto(); 
            bala.transform.position = posicaoDeCriacao;
            bala.transform.rotation = rotacaoDeCriacao;
        }
    }
}

Obrigada desde já pela ajuda! :)

1 resposta

Olá, tudo bem ?

Vi que sua dúvida foi aberta já tem um tempo :(

Será que conseguiu resolver ? :D

Se sim compartilha conosco como fez!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software