Unity FPS游戏脚本射击脚本

作者 by WIMI / 2021-08-14 / 1 评论 / 2490 个足迹

主

演示图

请输入图片描述

实现的功能

  • 换弹
  • 射速调整(射线无效)
  • 射线触发/碰撞体触发
  • 射击距离设定
  • 对象池储存子弹
  • 半自动/全自动

设置面板详解

设置面板

基本设置

设置方法描述备注
Open脚本全局的开关
OpenObjectPool对象池的开关不开对象池也可以生成子弹也可以射击

Firearms_Attribute

设置方法描述备注
Name枪的名字
Bullet_Distance开火的距离(float/秒)
Firing_Iinterval开火间隔(float/秒)如全自动一直按开火第一发和第二发间隔
Cartridge_Clip弹夹(int)主弹夹,就是你发射一颗消耗的子弹
Spare_Cartridge_Clip备用弹夹(int)换弹的时候消耗的弹夹数量
Replacement_Cartridge_Clip换弹时间(float/秒)按下换弹的时候消耗的时间(换弹默认是R)
Hurt伤害(int)打到物体时候扣除的血量/你也可以自定义修改打中后的效果
Bullet_Speed子弹移动速度(float)子弹射出的速度/射线也有实体子弹射出
Choice枪械的射击方式选择有半自动和全子弹/开火间隔对半自动也有效果
ShootingDetection射中检测方式射线检测是最好的可以防止速度太快而,检测不到(可以使用时间判断是否击中有效算法没写,没实现),碰撞器检测是目前实现射击速度
layer可射击的物体层的检测可射击物体的区分

binding

设置方法描述备注
character人物的绑定辅助动画
Muzzle绑定枪口子弹发出的位置
Bullet_Prefabricated子弹的预制体发射出来的子弹样子(对象池有引用)
ObjectPool对象池的绑定如果没开对象池可以不用理

使用教程

如果模型没拆分你可以自己定一个枪口,绑定好,需要自己新建一个空物体存放对象池

请输入图片描述

人物模型这样放可以防止旋转变形,最外面那层是不要有缩放否则会导致变形

后记

部分代码可能写的不是很规范,不过看别人代码也很烦,遇到不懂的可以私聊我

如果子弹不消失,请看一下Bullet的判断中的

if (System.Math.Abs(transform.localPosition.x - Bullet_Position) > Bullet_Distance)

是否要按照自己的需求改动


如果有什么BUG,可以评论区,私信,邮件告知

下载地址

蓝奏云

老版本

蓝奏云脚本2

蓝奏云脚本1

独特见解

 评论 1 条