Unity 子弹的射击效果

射击是FPS游戏中最重要的一环,如果实现一个简单的射击效果呢,来跟我一起学习一下吧

射击元素:

  • 枪口
    枪口决定了一个子弹初始时的位置和方向,可以使用一个空物体来代替,放置在射出子弹的位置,
  • 子弹
    射击肯定需要子弹才能够完成整个射击的过程,在游戏设置时可以将子弹设为预制体

子弹:

  • 子弹的几个特殊的地方,首先就是速度比较高,这个时候对于碰撞检测的方式就很重要了,要选择连续动态检测,这样才不会出现正好穿过检测间隔没有触发碰撞检测的情况(也可以使用射线检测)。然后子弹有穿透性,所以要根据实际情况勾选Is Trigger。最后保证子弹上面有刚体组件,模拟物理特性的同时,也可以使用velocity为其赋予速度

实现过程:

首先在脚本中获取枪口的位置,在该位置用Instantiate实例化一个子弹,并且方向与枪口方向保持一致
接下来要给子弹一个初速度,使其能够被射击出去。首先确保复制的子弹有刚体组件,然后通过velocity为其赋予速度:

Velocity:

  • 注意使用velocity给与一个刚体速度时,速度方向使用的是世界坐标,所以在本例子中,需要将枪口的本地坐标转换为世界坐标,转换的函数为:transform.TransformDirection()

所以实现射击操作的代码为:

   	public Transform muzzle;   //枪口
    public Rigidbody bullet;  //子弹预制体

    private float speed = 800f;//子弹初速度

    // Update is called once per frame
    void Update()
    {
    
    
        Rigidbody bulletCopy = (Rigidbody)Instantiate(bullet, muzzle.position, muzzle.rotation);
        bulletCopy.velocity = bulletCopy.transform.TransformDirection(Vector3.forward * speed);
    }

猜你喜欢

转载自blog.csdn.net/xinzhilinger/article/details/110436880
今日推荐