今天实现的内容:
子弹散射逻辑
子弹散射就相对后坐力简单多了。在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();