如何移动 3D 炮弹 Unity

How to move a 3D projectile Unity

我想了解在 Unity 中创建 3D 射弹的过程。在网上关于创建常规激光类射弹的少数帖子中,对过程的解释很少。有人可以帮助我了解如何逐步射击弹丸的方法。

我试图理解的问题:

How to move the projectile in the direction that the shooter GameObject is facing

您使用相机的 Transform.forward 使射弹朝玩家面对的位置移动。

发射弹丸的过程如下:

1.Instantiate/Create 子弹

2.设置玩家前方子弹的位置

3。获取附加到实例化项目符号

Rigidbody

4如果这只是带有角色控制器且没有可见枪支的相机,

使用 Camera.main.Transform.Position.forward + shootSpeed 变量射击子弹。

如果有可见的枪支或物体你想从中射击

创建另一个 GameObject(ShootingTipPoint) 将用作子弹应该从哪里射击并将其定位在您想要射击的 Gun 或 Object 的位置,然后您使用该 GameObject 的 ShootingTipPoint.Transform.Position.forward 进行射击子弹而不是 Camara.Main.Transform.Position.forward.

还有一个工作代码:

public GameObject bulletPrefab;
public float shootSpeed = 300;

Transform cameraTransform;

void Start()
{
    cameraTransform = Camera.main.transform;
}

void Update()
{

    if (Input.GetKeyDown(KeyCode.Space))
    {
        shootBullet();
    }
}
void shootBullet()
{
    GameObject tempObj;
    //Instantiate/Create Bullet

    tempObj = Instantiate(bulletPrefab) as GameObject;

    //Set position  of the bullet in front of the player
    tempObj.transform.position = transform.position + cameraTransform.forward;

    //Get the Rigidbody that is attached to that instantiated bullet
    Rigidbody projectile = GetComponent<Rigidbody>();

    //Shoot the Bullet 
    projectile.velocity = cameraTransform.forward * shootSpeed;
}