枪械后坐力规则

更新日志

日期 内容 作者
2022年12月12日 调用震屏控制相机前后与左右旋转 朱兴韬
2022年12月6日 新增准星强制回准与触发镜头移动跳出回准需求 朱兴韬
2022年12月5日 新增每1次射击后坐力镜头运动曲线,与准星回位镜头运动曲线需求 朱兴韬
2022年11月28日 修改系统案,更改后坐力实现方式 朱兴韬
2022年11月25日 创建文档 朱兴韬

一、设计目的

新增枪械的后坐力机制,强化射击手感,增加枪械策略性与射击趣味性

二、流程图

后坐力计算机制流程图_221128_v2.0-16696246979671.png

三、概述

  • 枪械现在在射击时,会附带后坐力,后坐力表现区别于现有的震屏功能。本文中将对后坐力的触发方式、触发表现进行规范与细化。

四、配置表

4.1 新增字段

在枪械预制中新增以下配置

字段 类型 内容
recoilGapTime int 停火间隔;配置毫秒
recoilMoveBackTime int 回位时间;配置毫秒
isForceMoveBack bool TRUE= 强制回准
FALSE= 如果玩家通过滑屏激活了aimingCamera,则不进行回准

四、功能规则

4.1 后坐力计算

  • 后坐力信息读取:枪械预制中新增后坐力脚本。

    • 读取脚本中配置后坐力信息,后坐力信息中枚举了在“连续射击”状态内,每1次射击的镜头偏移量。每1次连续射击的重新触发,都需要从后坐力信息的第1个条目进行重新读取。

      KEY(开火次数) X Y 备注
      3 0.2 0 表示从第0枪~第3枪,每次射击镜头绕X轴移动0.2个单位。
      10 0.15 0.2 表示从第4枪~第10枪,每次射击镜头绕X轴移动0.5个单位,绕Y轴移动0.2个单位。
      18 0 -0.2 表示从第11枪~第18枪,每次射击镜头绕Y轴移动-0.2个单位,18枪之后若无配置,则按照第18枪的配置信息执行偏移,直至子弹耗尽。
  • 连续射击的失效

    • 当两次射击间隔≥recoilGapTime配置的时间,武器被视为停火,下次射击重新计算后坐力。

4.2 后坐力表现

  • 新增后坐力运动表现:枪械预制中新增后坐力曲线脚本,用于控制每次射击镜头偏移的运动曲线,调用Unity的Curve组件实现。

    image.png

    • X轴表示后坐力表现时长,一般配置为枪械的射击间隔;Y轴为偏移量表现速度。
    • 图示,若图内枪械为“霰弹枪”的后坐力镜头表现,根据该曲线,则表现为:
      • 射击后,枪械在0.05s内会迅速播放偏移量的95%,剩余5%部分在0.05s内表现完成。霰弹枪短时间快速抬高,滞空,进入回准表现。
  • 镜头偏移坐标:

    • 绕X轴的偏移:根据prefab配置镜头像素偏移,该偏移量可累计。
      • 0=不偏移;负整数=向下偏移;正整数=向上偏移。
    • 绕Y轴的偏移:根据prefab配置进行准星像素偏移,该偏移量可累计。
      • 0=不偏移;负整数=向左偏移;正整数=向右偏移。
    • 偏移时长:根据后坐力脚本配置时长,控制准星完成该次偏移所需要的时间,该时间可累计。
      • 配置毫秒。

4.3 准星回位

  • 准星回位触发条件:两次射击间隔≥recoilGapTime配置的时间,开始进行准星回位流程。
  • 准星回位方式:计算玩家在射击或连续射击期间获得的所有Y轴与X轴偏移量,根据该偏移量,移动准星进行回位。
    • 回位的持续时间:根据recoilMoveBackTime的配置时长,控制准星从当前位置移动到回位位置所需的时间。
    • 新增回位运动表现:在每一把枪械预制中新增参数(同4.2 后坐力表现),用于控制每次回位准星偏移的运动曲线。
  • 新增bool类型字段:isForceMoveBack
    • TRUE= 强制回准。
    • FALSE= 如果玩家通过滑屏激活了aimingCamera,则不进行回准。

4.4 震屏功能

  • 现在在射击时,调用现有的CameraShake功能,每一次射击,震屏表现的持续时间与后坐力表现时长相等。
  • 枪械预制中可加载震屏文件。