子弹散射——Unity随手记(2021.2.4)

今天实现的内容:

子弹散射逻辑

子弹散射就相对后坐力简单多了。在CreateBullet的时候给予子弹一个随机大小的角度偏量。

        // 计算子弹散射量
        protected Vector3 CalculateBulletSpreadOffset()
        {
    
    
            // 子弹的散射会根据摄像机fov大小做调整
            float temp_spreadPercent = spreadAngle / eyeCamera.fieldOfView;
            // 使用随机数
            return Random.insideUnitCircle* temp_spreadPercent;
        }

这是散射算法,使用Unity的insideUnitCircle得到一个在半径为1的圆中的随机点,乘上我们定义的最大散射角(spreadAngle),这是基本思想,UP使用摄像机fov来控制散射最大角,其实这样的设计我觉得不太行,现在的射击游戏在瞄准之后子弹散射都会减小到一个很小的程度,不在乎使用几倍镜。
接下来在创建子弹的地方给创建出的子弹加上散射角即可。


BUG以及缺陷:

正如上面所说,最好是瞄准以后就有一个单独的散射最好。


值得注意的:

注意一定要加(+=),别直接赋值(=)了。

		// 给子弹随机散射角度
		temp_bullet.transform.eulerAngles += CalculateBulletSpreadOffset();

猜你喜欢

转载自blog.csdn.net/qq_37856544/article/details/113663637