如何移动 3D 炮弹 Unity
How to move a 3D projectile Unity
我想了解在 Unity 中创建 3D 射弹的过程。在网上关于创建常规激光类射弹的少数帖子中,对过程的解释很少。有人可以帮助我了解如何逐步射击弹丸的方法。
我试图理解的问题:
- 如何将射弹朝射击游戏对象所面对的方向移动。使用 position.Translate() 方法迫使我选择一个特定的方向来移动对象。
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;
}
我想了解在 Unity 中创建 3D 射弹的过程。在网上关于创建常规激光类射弹的少数帖子中,对过程的解释很少。有人可以帮助我了解如何逐步射击弹丸的方法。
我试图理解的问题:
- 如何将射弹朝射击游戏对象所面对的方向移动。使用 position.Translate() 方法迫使我选择一个特定的方向来移动对象。
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;
}