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! :)