打开网易新闻 查看精彩图片

作者:Minke某厂搬砖战斗策划

首发知乎https://zhuanlan.zhihu.com/p/567528044

全文21000+字,参考图&视频140+,建议在PC端阅读,建议配合上一篇数值篇一起食用。

内容量很大,预估阅读时间不确定,建议想认真看完全文的同学分课时阅读,一次看完消化不了。

前言

距离上一篇讲枪械数值的文章发布已经过了8个月。

不过恰恰是因为隔了这么久,在武器表现层面上又有了些新的感受。

这半年做了上线项目的武器表现升级,动作、音效、动作品质提升和相关客户端逻辑;去新项目之后又从头看了一遍更底层的东西,包含Control层面的灵敏度、辅助瞄准,制定一些前期美术规范之类的内容,相对来说对武器表现,主要是打击感,有了更全面的认知,这才敢来写这一块的相关内容。

这一篇和数值篇一样,可以理解为是反拆+经验分享,主要目的是帮助大家查漏补缺(提需求的时候翻一遍),或是建立对枪械设计的最基础的认知,以后填问卷的时候除了说“动作僵硬打击感差”,还可以说些更细致的内容。

列举的仅仅是我工作中做过或者拆解过的模块,应该列不全,也不会过于深入,只要正儿八经做过射击的战斗策划应该都能覆盖到,我只是做了一点点浅薄的整理工作,要转发甚至是洗稿都随意,毕竟射击市场卷到现在,大家已经不是在拼有没有,而是做的怎么样了,看手艺的事我还是有信心。

游戏交互的艺术博大精深,还需要诸君一起努力。

纲要:聊聊打击感

我认为打击感是一种交互的乐趣,核心组成部分是输入(Control)与反馈(camera&character)

反馈有很多种,也许现在是视觉听觉触觉,随着技术的发展还能期待更多的感观刺激。

这句话需要注意的是,我特别强调了输入:

在主机和PC平台,我们的输入行为都是通过手柄/键鼠这类机械硬件,他们提供的反馈更多是来自于我用的什么样的设备,或是游戏内鼠标/手柄速度的区别,可控空间不大。

但是在手机平台,当玩家最基础的位移和转向都要通过虚拟摇杆来实现的时候,如何用虚拟摇杆还原出主机/PC平台的操作,甚至比主机平台更加跟手,是一切打击感的基础。

“玩家连人都瞄不准,后面的反馈再花里胡哨有什么用呢”。

打开网易新闻 查看精彩图片

大概包含的内容

全文会以FPP射击手游为主来讲打击感,看完的话应该就能理解为什么大家都说“策划什么都懂一点,什么都搞不明白”。

一、Control(手游)

控制层主要包含两块内容,一块是玩家自己的主动输入,一块是我们利用机制给到玩家的被动补偿,目标都是提供及时、精准、符合预期的反馈,从而强化操控感和打击感。

这里主要聊手游,在control层面,手游会比端游复杂很多。

1. 主动输入

1.1 转向(右摇杆)

手机上的转向设计常见三种类型:固定加速、距离加速、速度加速。

  • 固定加速:模拟手柄操作,转向加速度是恒定的,转向角度取决于滑动距离
  • 距离加速:玩家滑屏距离越远,转向的加速度越快(这个好像只有CODM在用)
  • 速度加速:玩家滑屏速度越快,转向速度越快(射击手游的主流灵敏度设计)

这里只聊速度加速的一些查漏补缺点。

1.1.1 输入平滑的处理

由于滑屏的采样和帧率挂钩,如果在滑屏过程中出现丢帧,客户端拿到的数据不平滑,滑屏速度的变化也会受到影响,导致转向失控;即使不丢帧,如果直接使用采样到的原始数据,速度变化的幅度也偏大,表现并不会太好。针对这种情况,我们需要取覆盖面更广的采样数据,或是针对单个采样做优化,来实现曲线的平滑变化。

  • 持续滑屏平滑处理:在玩家持续滑屏时,建议用当前帧和上一帧,帧数更高的情况下可以再取一帧,加权处理帧数间的速度变化,这样在丢帧/帧数低的情况下,仍然能够取得相对平滑的数据。
  • 针对首帧的平滑处理:首帧滑屏由于缺少连续滑屏的数据做平滑,会做一个单位时间位移超过X个像素点时,对数据进行缩放的处理,避免首帧速度过快导致镜头失控。当玩家真的有高速滑屏需求时,后面的帧数会迅速跟上速度。(注意这里一定是达到某种高速状态时再来做缩放,核心是避免误触或者数据误差导致失控,而不是让玩玩家低速卡手)

1.1.2 系统层防误触的平滑处理

IOS和安卓在系统层都有防误触设计,用于分辨滑屏和点击,这里会导致两个问题:

打开网易新闻 查看精彩图片

系统层防误触设计导致的输入延迟

  • 在系统层判定距离内,即α时间段(此时假设3帧),这段时间内玩家的物理上滑动屏幕并不会得到响应
  • 当系统层判定为滑屏,从而开始返回数据到客户端时,首次上报的坐标位置和初始位置差距会偏大,玩家会发现镜头前几帧没反应,第四帧突然出现一个大的跳动。

这里也需要做平滑处理,可以采用上面处理首帧的方式来做限定条件下的缩放,也可以针对IOS,直接不取第一帧的滑屏数据,看项目组对手感灵敏程度是否有强要求。

1.1.3 DPI换算

我们做灵敏度的最终目的是,希望能够让玩家形成肌肉记忆,从而在不同设备上实现无缝切换。

所以我们针对玩家输入数据的单位,并不是像素点,而是需要归一换算至具体的英寸。

即:

玩家以相同速度滑动一定的物理距离,在不同手机上的表现需要是一致的。

所以需要做的是确定一个标准DPI下的体验后,不同机型根据DPI标准做一个比例缩放。

有的项目是用屏幕尺寸来直接定的标准,逻辑上是一样的。

1.1.4 FOV换算(可选)

打开网易新闻 查看精彩图片

FOV 50-中速滑屏表现

打开网易新闻 查看精彩图片

FOV 90-中速滑屏表现

如上图对比可以发现,转动同样的距离,因为镜头内变化更大,FOV50会比FOV90看起来转向的角度更大,所以可以尝试针对场景fov的不同,新增一个缩放控制系数,使玩家在体感上滑动差异不会过大。

当然也可以像CODM一样不做处理,除开玩家设置,改变场景FOV只有举镜行为,那么开镜这种行为单独去设置好玩家不同倍镜的开镜灵敏度,也能实现控制转向的效果。

1.1.5 灵敏度曲线设计

经过上文的一大堆处理之后,我们拿到了玩家的输入数据,但如何将玩家的输入数据映射成转向度。

我们需要建立 单位时间移动距离(速度)和 镜头转向角度 的关系。

这个曲线需要满足以下几个条件:

  • 低速阶段,能够实现小幅的精准移动
  • 加速阶段,能够迅速识别玩家的快速滑屏意图,转向角度能够迅速增加
  • 高速阶段,能够对角速度进行收敛,避免玩家的镜头失控
  • 需要有一个区间,控制玩家镜头移动的最大速度和最小速度

那么满足这些条件的曲线其实已经呼之欲出了。

打开网易新闻 查看精彩图片

常见的速度加速灵敏度映射曲线

曲线的调试需要跟战斗体验挂钩,PVP游戏的转向区间要求就肯定比PVE大,曲线也要朝这个方向调整。

在满足预期转向目标的情况下,覆盖的滑屏速度范围尽可能做大,这样才能实现颗粒度更细的滑屏,避免稍微一起速就进入超速收敛区间的情况。

1.1.6 灵敏度调试的小工具

  • 输入工具:推荐苹果系统的自定手势,能够完整复现滑屏操作,确保每次的输入量完全一致

打开网易新闻 查看精彩图片

苹果的自定手势工具

  • 监测工具:需要在编辑器内做一个调试工具,实时展示当前帧数滑屏距离和对应转向角度、总滑屏距离和转向角度的工具,录屏之后用能够逐帧播放的播放器检验每帧的变化,这个每个项目都有自己的调试工具,我就不截图了
  • 评估工具:我的习惯是用总转向角度和竞品对比,确保整体的转向角度差异不大,针对过程中变速数据,会用excel记录数据做逐帧对比,观察具体的差异点,但最快的评估工具仍然是负责策划的手和脑子,最好的评估工具永远是玩家CE

1.2 位移(左摇杆)

位移相对于转向来说就不会有这么多的踩坑点,大多数设置市面上都有现成的参考,需要关注的内容主要集中在两块:位移角度和位移距离。

1.2.1 位移角度

打开网易新闻 查看精彩图片

在数值篇提到的不同方向速度设置及数值的差异

打开网易新闻 查看精彩图片

左摇杆校正区/死区示意

打开网易新闻 查看精彩图片

奔跑触发的角度示意

我们在数值篇的时候时候提到,我们向前的速度和向左右后的速度是不一致的,其中简单提过扩大判定区域来帮助玩家前进的设计,这里做一下更细致的说明,左摇杆的区域大概分为以下几块:

  • 红色区块:摇杆中心的死区,避免摇杆过于灵敏导致玩家无法实现静止操作
  • 浅红色区块:前后左右四方向校正区,玩家在这个角度之内位移,移动方向为标准的前后左右
  • 白色区块:玩家向左前/右前/左后/右后位移的操作区间,这里的映射角度支持支持配置,例如此时留给玩家的物理操作区间为15——75度,可以将游戏内虚拟操作区间也做成15——75度,也可以映射为30——60度/0——75度或其他角度
  • 绿色区块:支持进入跑步状态的触发角度,还可以做更细的奔跑保持角度之类的设计

这些区域的设计目的主要是两点:

  • 避免玩家一些误操作/噪点操作,例如想静止但是一直在走,想走直线但是一直在左右小偏移
  • 降低玩家的操作门槛,手指的大小和灵活程度确实因人而异,许多区域需要做大做宽来让玩家感到更跟手

1.2.2 位移距离

打开网易新闻 查看精彩图片

左摇杆触发距离示意

实现玩家的精细移动,除了位移角度设计外,还需要做细致的位移距离处理,一般的位移距离划分为以下几块:

  • 红线:上文提到的死区,玩家在这个范围内滑动,不会有任何效果
  • 绿线:红线到绿线的位置,玩家在这个范围内滑动,触发行走行为;玩家滑动到绿线范围以外,触发奔跑行为
  • 橙色圈&橙色底:虚拟摇杆图示
  • 蓝线:当玩家滑动到蓝线区域以外时,锁定奔跑行为,此时松开手指玩家进入持续奔跑状态

1.3 按钮操作逻辑

1.3.1 点击

点击层面,遇到过的问题大概是以下几个,围绕着即时性和优先级。

  • 触发逻辑:按下触发,还是松手触发,二者的感官差距极大,千万要跟程序对齐,例如开镜往往是按下触发,而开火根据武器类型的不同,可以做按下触发和松手触发
  • 优先级逻辑:当多个按钮叠在一起,同时被点击时,优先触发哪一个,这里按钮的层级需要规划,一般来说会把开火作为第一优先级
  • 响应即时性:这里跟局内一般没啥关系,顺带提一下。存在两个坑,一是需要跟服务器交互的按钮响应速度过慢(例如早期版本CODM的大厅),一个是UI动画做的很长导致按钮的生效节点不明确(例如按钮有一个超长时间轮廓闪光)

1.3.2 长按

长按更多的关注点在于,玩家按住期间能够支持的操作,这部分提需求时也需要想明白。

  • 长按期间是否支持转向:这个功能放在开火键/技能键上很好理解,实现一边开火一边瞄准的功能,但是其他按钮,例如跳跃、开镜、下蹲等是否默认开启,是需要增加相关开关做控制的
  • 长按响应即时性:长按触发的按钮,在按下的时刻就能持续响应玩家的操作,这里需要注意的是如何应对中途的打断和打断后的状态,例如玩家按住开火后,子弹打空触发换弹,开火键以怎样的频率去持续校验,从而实现玩家不松手的情况下,换弹完毕后立即开火

这里再提一个有趣的BUG或者机制,CODM的按钮因为组件不同,玩家按住下蹲键,之后将手指拖拽到开镜键上,能够连贯实现下蹲/滑铲开镜的操作;如果我们进一步细化考虑按住某个按钮并且滑屏的情况下,是否能与其他按钮有交互,也许会进一步优化手感。

1.3.3 按钮的融合

PC和主机平台因为按键足够多、相互分离且操作便利,加功能会很方便,例如枪械检视、卡壳处理等等。

但手机平台屏幕尺寸有限,玩家可以使用的手指也有限,所以会常见一些功能融合的按钮,这些按钮的逻辑也需要做精细设计并提供开关。

以最常见的一键开镜开火为例,就会面临先开镜再开火,还是开镜的同时开火?开火完毕后松开手指保持开镜,还是自动落镜等问题。

2. 被动补偿

2.1 辅助瞄准

年初在写数值篇的时候,还觉得AA这个东西需要藏着掖着,后来发现其实大家的功能都差不多,想拆随时都拆的出来,甚至已经有了现成的组件。

在代码插件创建的Pro Aim Assist - 虚幻引擎商城

www.unrealengine.com/marketplace/zh-CN/product/pro-aim-assist-01

也是过了半年才明白,做出来是一回事,调好是另一回事,玩家不希望AA太强(APEXM测试/COD19手柄),更不希望AA太弱,我们需要做到的是“让玩家觉得他自己很强”。

这里的调试逻辑和指导哲学,才是每个战斗策划的手艺所在。

所以这些东西是怎么实现的,真不重要了,可以简单列一下。

2.1.1 吸附类

吸附定义可以概括为:枪械的准心在某些条件下,自动向目标靠近,辅助玩家射击。

常见的吸附类AA包括开镜吸附、开火吸附和磁力吸附,具体表现如下:

打开网易新闻 查看精彩图片

APEXM开镜吸附

打开网易新闻 查看精彩图片

APEXM磁力吸附

开火吸附由于需要玩家开火,表现没有开镜和磁力这么直观,可以理解为和开镜吸附的逻辑一致,在开火的过程中逐渐把准心向目标身上靠。

吸附类的辅助瞄准的设计大概可以简化为解决两个问题:

目标选择 和 吸附表现

A. 目标选择:

  • 目标处理:当准心周围有多个目标时,是否以最近的目标为准;如何解决多个目标重叠时,玩家想打后面那个的问题
  • 判定范围:以胶囊体为生效范围,还是在胶囊体外再增加一个判定框,进入判定框开始吸附;不同距离的判定框是否需要有大小差异;当准心指向胶囊体内部以后,吸附是否持续生效
  • 生效条件:只对敌方人体目标生效,或是同时对召唤物(靶场靶子)也生效;任何时候都生效,开镜时生效,还是玩家有输入甚至输入达到一定阈值时才生效

B. 吸附表现:

  • 方向:吸附的方向以人物中轴线为目标,还是以质心为目标,还是以骨骼为目标
  • 时间:吸附是配置固定时间,到时间就结束,还是没有吸附到目标就持续吸附;是否需要根据距离单独配置
  • 速度:吸附的速度是固定的角速度,还是根据不同距离的吸附时间反算出来的插值速度
  • 逃逸:当检测到玩家的滑屏方向和吸附方向不一致时,需要取消吸附,需要考虑玩家是否在对抗吸附、玩家对抗的吸附的滑屏阈值、吸附消失的插值时间这些问题

2.1.2 阻尼类

定义:当玩家操作镜头划过敌方目标时,滑屏灵敏度自动降低,使准心在目标身上停留更久,辅助玩家瞄准。

打开网易新闻 查看精彩图片

APEX端游阻尼

看上图可以发现,镜头在滑动过敌方目标时,转向灵敏度显著下降(这图确实看着容易头晕)。

打开网易新闻 查看精彩图片

阻尼生效示意

阻尼的生效逻辑比较简单,玩家的镜头划过阻尼触发范围时,会乘上相关的阻尼系数(通常小于1),从而使转向速度变慢。

  • 橙圈:阻尼的生效范围,支持不同距离配置不同的范围
  • 绿线:玩家的镜头朝向
  • A点:阻尼系数为1,该点向左阻尼系数不生效
  • B点/C点:阻尼系数为设定值,镜头划过BC点(即胶囊体时),阻尼系数达到最大,支持不同距离配置不同的大小
  • 灰色方块:阻尼的插值区间,阻尼系数逐渐从1降低到设定值

2.1.3 修正类

无论是吸附类,亦或是阻尼类,都只是帮助玩家更好的瞄准目标,底线时玩家至少需要把准心放到目标身上。

接下来要看的修正类,才是真正的重量级。

定义:当玩家开火满足一定条件时,对射出的子弹或是子弹轨迹进行修正,帮助玩家直接命中目标。

打开网易新闻 查看精彩图片

APEXM 子弹保底

打开网易新闻 查看精彩图片

命运2 子弹偏移

打开网易新闻 查看精彩图片

守望先锋:归来 弹线示意

APEXM的子弹保底和命运2的子弹偏移都是通过直接修改子弹的落点,来帮助玩家命中目标,不过实现上区别比较大。

守望先锋则是通过直接修改子弹的碰撞体大小,将子弹判定从一条线,变成一个圆柱体(可以理解为毛妹没能量时的柱子和有能量时的柱子),从而让玩家更容易命中目标【这个不保真,听小道消息说这样做的】。

子弹保底(没做过,我猜的):

子弹保底是通过计数的形式来实现,当玩家命中目标的判定框N发子弹且没有对目标造成伤害时,N+1发子弹会直接命中敌方目标

  • 触发范围:胶囊体外新增一个判定框,支持随距离的变化设置不同大小
  • 触发子弹数:支持可配置的子弹数量,不同枪型触发条件不同
  • 保底命中的实现:改子弹的轨迹或者改子弹碰撞的大小都可以实现,目标是让玩家的这一发开火必定命中目标

子弹偏移:

关于子弹偏移,小黑盒的这篇文章讲的很清楚,很感谢这个兄弟,这也是我坦诚分享的源动力之一。

https://api.xiaoheihe.cn/v3/bbs/app/api/web/share?link_id=54066776api.xiaoheihe.cn/v3/bbs/app/api/web/share?link_id=54066776

简单来说:子弹偏移机制就是围绕着屏幕中心发射多个判定圈,当不同的判定圈与目标碰撞体相接触时,将子弹向碰撞体做不同程度的偏移。

打开网易新闻 查看精彩图片

子弹偏移示意

上图是一个比较简单的示意(虽然codm没做这玩意):

  • 黄框:敌方目标高伤害碰撞盒
  • 蓝框:敌方目标标准伤害碰撞盒
  • 红圈:子弹基础偏移圈,当红圈与敌方目标碰撞盒重叠时,子弹会向红圈内,距离准心最近的碰撞盒位置偏移,协助命中目标,需要支持根据距离的变化,配置不同的偏移角度or偏移距离
  • 黄圈:高伤部位偏移圈,当黄圈与敌方目标高伤害碰撞盒重叠时,会将子弹优先偏移到高伤害的位置,需要支持根据距离的变化,配置不同的偏移角度or偏移距离

设计上很好理解,当玩家瞄的大差不差的时候,系统帮你偏一下, 偏移的程度还可以作为数值直接开放出来。

碰撞修改(小道消息,不保真):

传闻OW有子弹有两套碰撞判定,一套是针对场景的,打一条射线,一套是针对目标的,打一个带体积的圆柱。

虽然是传闻,但实际上具有明显的可行性,表现可以参考毛妹的柱子,一定是越粗越容易命中目标:

打开网易新闻 查看精彩图片

能量为0时柱子粗细

打开网易新闻 查看精彩图片

满能量时柱子粗细

难点是否要为了这个辅助瞄准来做两套碰撞体系,我技术力不够,很难想象出具体的做法,不过确实也算是一种相对优雅的辅助瞄准手段。

2.2 位移补偿

如果做一个简单的归类,辅助瞄准是帮助玩家实现更精确的转向,是在优化右侧虚拟摇杆的操作。

那么位移补偿则是帮助玩家实现预期中的位移表现,优化左侧虚拟摇杆及相应位移按钮的操作。

2.2.1 移动优化

在关卡设计中会有一个标准叫做通行流畅度,监测玩家在这张地图中的移动是否顺畅,会不会感觉粘滞、卡顿。

这一块其实算是关卡策划的专业内容,我不太懂,简单列一些我见过的问题:地面凸起不合规范/未做行走落差处理,没有针对过门做相应的位移辅助,局内障碍物的碰撞速度补偿等。

好消息是一份完整的3C Metrics文档可以大幅优化这些问题。

2.2.1.1 地面凸起/行走落差相关

在项目初期,3C的策划会给一份3C Metrics文档来限定局内关卡的标准,包含人物高度/移速/跳跃高度之类的数据,其中就包括行走落差,指玩家不需要跳跃和攀爬,就可以行走通过的障碍物高度。

踩过的两个小坑:

1.关卡的碰撞不一定需要和场景完全对齐:

行走落差一般是通过射线来做判定,也不会允许玩家攀上负角度的障碍物。

所以假设遇到这类具有设计感的负角度台阶/石头,或是在地形比较复杂的情况下尝试跨越90度台阶,都有可能造成一定的误判。这里的建议是场景里的地形长这样,但是相关的碰撞不一定要刷的一模一样,给台阶的碰撞加一个坡度,大家的日子都会好过些。

打开网易新闻 查看精彩图片

特殊地形示意-负角度台阶

打开网易新闻 查看精彩图片

刷个带坡度的完整碰撞

以这个负角度的台阶为例,如果碰撞真的刷成蓝色和模型一摸一样,大概会出现即使配置了很高的跨越高度,也会人物没法直接走上去,需要点击跳跃的问题。

这个时候如果多刷一个粉红色区块的碰撞,相关的行走和跨越表现就不会出错了。

2.场景中的零碎物件也需要符合3C Metrics文档:

为了避免关卡场景很空,我们往往会摆一些东西进去,什么桌子椅子箱子,花盆花台栏杆,但这些物件在摆进去的时候就需要考虑到,这个东西是否能让玩家直接走过去/翻过去,根据标准文档来确定尺寸。

我自己有一个比较简单的评估标准,来看某个物体到底应该不应该支持玩家行走通过:

当玩家镜头推平或处于常规角度(爆头线/架枪位)时,出现在镜头中的物体需要翻越通过,没有出现在镜头中的物体需要行走通过。

例如图中的这个探照灯,早期版本是无法直接跨过去的,推动摇杆走到这里会顶住,玩家平视的情况下还看不见这个灯=。=好在后期修掉了这个BUG。

打开网易新闻 查看精彩图片

CODM突尼斯死亡探照灯

2.2.1.2 门的判定相关

在手游上精确的通过指定路线,对于大盘玩家来说一直是比较麻烦的事,和键盘按下WASD四个键相比,玩家的手指控制能力差异实在是过大了。

这意味着我们需要更宽的街道、更大的门来帮助玩家顺畅通过,但即便做的再大,也会有玩家顶着门框就是不过区,这里提供一种过门辅助的手段:过门吸附。

打开网易新闻 查看精彩图片

过门辅助吸附框示意

打开网易新闻 查看精彩图片

CODM的过门辅助示意

吸附框的尺寸略大于门,确保玩家在门附近顶着墙的时候能够被吸过去,从而顺利通过窄门;

但这里需要注意的是,吸附框的宽度不宜过宽,最好需要玩家顶墙时再触发,否则玩家无法实现利用门为掩体的peek操作,刚一探头peek,人就直接被吸过去了。

2.2.1.3 顶墙/顶障碍物位移相关

打开网易新闻 查看精彩图片

拐角位移案例

顶墙/顶障碍物导致的位移速度异常,往往和位移的实现方式有关。

如图所示,玩家的位移方向的移动速度,会拆解成X轴和Y轴的速度来实现,在没有障碍物的情况下,X轴和Y轴的速度都是正常,玩家的移动不会有问题。

但假设玩家的位移朝向不变,此时顶住墙了,X轴提供的速度几乎归零,只有Y轴有速度时,玩家的移速就会偏慢。

而且由于玩家做摇杆指向的不精准,会经常出现玩家认为自己在平行墙面移动,实际上靠墙遇到减速的情况。

(如果还是没有理解这个问题,你可以现在放下手机或者站起来找一面墙,当你和墙面平行移动时,位移速度是正常的,但是当你与墙面夹角45度与墙亲密接触时,你的移动方向依然和墙面平行,但是速度会变慢不少)

打开网易新闻 查看精彩图片

和平精英顶墙处理

打开网易新闻 查看精彩图片

顶墙补偿示意

这里就需要引入优化方案:顶墙补偿。

当玩家的碰撞体与墙壁/障碍物发生接触,同时玩家的朝向和墙体/障碍物的夹角达到一定阈值条件时,提供一个垂直于障碍物法线方向的距离/速度补偿,帮助玩家快速通过障碍物。

2.2.2 跳跃优化

https://youtu.be/LrLHsbTK5bM?t=1904youtu.be/LrLHsbTK5bM?t=1904

跳跃这里,类似于平台吸附之类的概念可能已经见怪不怪了,这里贴一个《地平线:零之曙光》的分享。

是一套动画驱动+程序驱动的系统。

大致流程是通过记录玩家按下跳跃时的原始数据,预测跳跃轨迹,然后小幅调整速度和角度到指定落点。

打开网易新闻 查看精彩图片

位移距离调整

打开网易新闻 查看精彩图片

空中转向调整

打开网易新闻 查看精彩图片

最终实现效果

  • 白色弧线:最初数值计算出的跳跃轨迹
  • 浅蓝色弧线:校正后的跳跃轨迹
  • 绿色大弧线:空中转向的调整轨迹

这一套系统,比起大家目前常用的跳跃距离固定,全靠平台上配吸附盒子强行吸到平台的设计,最大的优势是实现了动画系统的良好表现,再也没有滑步没有脚步悬空,配合Motion Matching的情况下不同跳跃距离能更有更流畅细致的动画表现。

3A厂商的功力就体现在这些小小的细节上,不需要在通过各种手段做后续补偿,而保证玩家一开始的落点就是精准的。

2.2.3 翻越优化

打开网易新闻 查看精彩图片

翻越补偿相关内容

翻越的实现会比较麻烦,涉及到触发距离、触发角度、障碍物高度判断/宽度判断,障碍物上方/后方是否有足量空间,障碍物本身是否可翻,翻越过程中是否能开火/转向等等细节。

绝大多数手游会把跳跃键和翻越键集成为一个按键,在障碍物附近时,需要玩家和障碍物的距离和朝向角度符合标准,按钮才会从跳跃功能替换为翻越功能,如何更好的识别玩家的意图,补偿玩家的操作,主要的落脚点在于人物与障碍物的角度/距离和障碍物的判定上,同时还需要给判断失误的补偿手段。

不过这样做仍然会出现一定量级的误判,如果需要更精细的操作颗粒度,推荐将跳跃和翻越拆开,彻底一劳永逸,否则补偿和补偿取消就是一个面多加水、水多加面的循环往复过程。

2.2.3.1 距离补偿

打开网易新闻 查看精彩图片

距离补偿

一般来说,翻越只有在玩家顶住障碍物时才支持触发(例如PUBG端游早期),但这样的体验会是玩家快速奔跑——顶墙速度归零——播放翻越动画,感受上不连续,所以会额外做一个距离补偿,当玩家所处的位置和障碍物的距离在一定阈值内时,玩家点击跳跃键,此时播放翻越动画同时带一个向前的位移,将玩家吸附到相应的障碍物上完成翻越(如图所示)。

在玩家跑动过程中可以将参数适当放大,来实现更好的跑动翻越效果。

2.2.3.2 角度补偿

打开网易新闻 查看精彩图片

角度补偿

玩家在翻越时,很难像翻越的图示一样完全垂直的面向障碍物,从机制上都会做一定的角度冗余,玩家没有对准障碍物时仍然支持翻越,因为手游的操作精度更低,所以需要放大这个角度的限制。

2.2.3.3 障碍物吸附

打开网易新闻 查看精彩图片

过窗/翻越吸附

这里的处理方式很像是上面提到的过门辅助,主要的应用场景是一些很小的窗户(可以理解为没有按照metrics文档的后续补救),在翻越通过某些较小的门窗、偏窄的障碍物,可以放大吸附框(即上图红框),通过吸附校正的形式,帮助玩家更准确的完成翻越。

2.2.3.4 容错机制

打开网易新闻 查看精彩图片

往后拉摇杆取消翻越

在做翻越补偿的时候,我们的目标永远是帮助玩家更好的翻过去,但会忽略一个问题:如果玩家此时并不想翻,那么应该怎么处理。

这个时候需要引入翻越取消的机制,常见的有翻越过程中点击跳跃键,跳跃取消翻越,或是跟CODM和PUBGM一样增加一个向后拉摇杆取消翻越。