我正在尝试了解在Unity中创建3D射弹的过程。在为数不多的有关制作常规类激光弹丸的在线文章中,关于这一过程的解释很少。有人可以帮助我理解如何逐步射击射击方法。
问题我想了解:
答案 0 :(得分:2)
如何将射弹向射击方向移动 GameObject正面临着
你使用相机的Transform.forward
使射弹行进到玩家所面对的位置。
射击射弹的过程如下:
1 。实例化/创建项目符号
2 。设置子弹在玩家面前的位置
3 。获取附加到该实例化项目符号的Rigidbody
<强> 4 即可。 如果这只是带有角色控制器的相机而没有可见的枪,
使用Camera.main.Transform.Position.forward
+ shootSpeed
变量拍摄子弹。
如果您想要从拍摄可见的枪或物体,
创建另一个GameObject(ShootingTipPoint),它将用作子弹应该拍摄的位置并将其放置在你要拍摄的枪或物体的位置,然后你使用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;
}