Meu script de arma instancia as balas como se fossem objetos filhos da arma, o que faz com que as balas se movam sempre que minha arma é movida.
Eu estava testando a capacidade de tiro da minha arma colocando uma esfera básica com um corpo rígido na variável bala gameObject. Eu esperava que a esfera simplesmente caísse no chão e nada. No entanto, quando me movi, a esfera se movia na mesma direção que eu. As esferas foram instanciadas como objetos filhos do objeto de jogo focinho.
o código do meu gunscript é mostrado abaixo
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Gun : MonoBehaviour
{
public GameObject bullet;
public Transform muzzle;
public int magazineSize;
public int bulletsInMag;
public float reloadTime = 3;
bool reloading = false;
Quaternion = transform.rot
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0) && bulletsInMag > 0)
{
Instantiate(bullet, muzzle);
Shoot();
}
else if ((Input.GetKeyDown(KeyCode.Mouse0) && bulletsInMag <= 0 && !reloading))
{
Reload();
}
}
private void Shoot()
{
bulletsInMag--;
}
private void Reload()
{
reloading = true;
StartCoroutine(ReloadTime());
}
IEnumerator ReloadTime()
{
yield return new WaitForSeconds(reloadTime);
bulletsInMag = magazineSize;
reloading = false;
}
}
bem, sim, de acordo com a API
Instantiate(bullet, muzzle);
irá instanciar uma instância debullet
as child ofmuzzle
.Você provavelmente queria usar uma sobrecarga diferente, como por exemplo
que irá instanciar o
bullet
nível da raiz da cena, mas na mesma posição e orientação do espaço mundialmuzzle