UE游戏开发25-- 弓箭模式设计与实现
本文记录箭雨技能的设计与实现思路(基于GAS):1. 玩家操作方式及其优劣2. 动画流程3. 数值/摄像机视角与UI反馈4.额外机制
基本目标:类似守望先锋半藏的射箭体验
对应B站视频:
UE游戏开发25-- “半藏”来袭!弓箭模式设计与实现(附思路分享)_哔哩哔哩_bilibili
程序实现流程简图
几个核心的设计问题
最简单的模式就是“指哪打哪,点击即发射”,显然,对于弓箭来说,这样的体验没有更适宜的操作感及好玩度。因此,很多大型游戏对于弓箭系统的设计是尽量往拟真方向靠拢的。既然拟真,不像枪械,箭矢的发射就存在一个蓄力过程,那么首先考虑的就是这个蓄力过程的操作方式问题。
1. 玩家操作方式
从玩家操作角度出发,有两种发射方式:手动蓄力与自动蓄力。一,进入弓箭模式后(一般是一个按键进入例如R),按住鼠标左键蓄力拉弓,松开时发射;二,进入弓箭模式后,自动进行拉弓蓄力,玩家只需在想要发射时点击左键即可发射。
优劣简述
两种方式各有利弊,并无好坏之分。第一种方式更加拟真,操作感相对更高,因为玩家确实消耗了力气实时的按住按键,更有参与感,而且这个操作感的秘诀就是现实的拉弓蓄力和按住这个操作本身相性就很好(都是持续消耗力气维持一个身体状态,具有体感反馈),再根据按住时长,同步辅以对应的拉弓动画音效等表现。但反过来说,频繁的按住操作,其实也会造成现实的疲劳,也是一定程度违背了日趋快节奏轻量化的游戏时代的需求,因此很多手游都采用了第二种方式自动蓄力,解放双手,同时也适合手游键位紧张的情形,此外,手机屏幕上的蓄力按压,其实并无很好的体感反馈,因此有些破坏了拉弓蓄力和按住操作的相性。
当然,根据游戏类型/体量/环境,可以适宜的选用自动蓄力或者手动蓄力的设计。也可以两种方式都提供,给予玩家一个设置开关选择是否开启手动蓄力。没记错的话,以前的守望先锋在某个版本中就加入过半藏的自动蓄力设置,毕竟竞技游戏的操作强度相对更大。
2. 动画流程
实现手动/自动蓄力的流程设计则必然有所区别,基本的瞄准偏移等控制不赘述。在动画表现上,看看自动蓄力:进入弓箭模式后,播放取箭动画-->播放搭箭上膛动画-->播放拉弓动画-->进入持续拉弓移动并蓄力计时状态。这几种动画如果是一个动画资源,那么一个蒙太奇播放就可以搞定,玩家只需R键进入弓箭模式,整个动画走完,开始移动或发射(拉弓等动画也可以不打断移动)。自动蓄力时有个细节要注意,需等到拉弓动画播放到刚好快拉满时才能允许玩家左键的响应,否则弓还没拉好箭就射出去了。
上述流程如果是手动蓄力,则会多一个中间状态:进入弓箭模式,播放取箭动画-->进入搭箭上膛待拉弓状态,这个状态下,玩家可以自由移动,弓是放在肚子前随时准备抬起 箭是上膛好了 的状态,此时玩家按住左键蓄力拉弓,才会-->蓄力拉弓动画,进入按住时持续拉弓(可移动)并蓄力计时状态。相比自动蓄力,动画和状态上显然稍微更复杂一点。手动蓄力也有细节要注意,开始按住蓄力拉弓时,为满足玩家快速点按时的响应,拉弓动画要尽量播放的快速,一般点按极限快速会低于0.1s,因此弓可以没拉满,但弓的抬起动画一定要调整到很快速以匹配快速射出的箭。
3. 数值/摄像机视角与UI反馈
根据蓄力时间的长短,造成的伤害/箭矢的下坠重力/飞行速度有所区别,最简单取线性正相关。首先要确定发射箭矢的各数值状态,同时对应到UI上。例如如下图中3的准心UI,快速点按时,各数值状态最小,箭矢的最终落点需要以3中最低点为准;最高数值的最终落点需要以最高点为准。下图中1代表蓄力时的中心圆圈,由蓄力时长从短到长,不断缩小。图中2代表射中时的UI反馈,爆头时会有更大扩散的动画表现,具体效果可以观看视频
其中存在更重要的问题:当前demo中的摄像机位置在弓箭模式下是跃肩视角,因此瞄准时的轨迹线和箭实际射出的轨迹线并不是同一条,而准心的最高瞄准点是和瞄准轨迹重合的,这就存在一个实际瞄准距离设定的问题。可以看下图示意。首先看第一个问题:
[*]越肩视角下的轨迹差异 以摄像机为起点发射的瞄准轨迹线(射线检测)一定存在一个最大检测长度MaxDist,如果在MaxDist以内检测到了目标,箭矢的发射方向自然是朝着碰撞点而去,最终落点肯定也是该碰撞点(如图中的1号点),但由于箭矢的飞行轨迹和瞄准轨迹差异,飞行轨迹上若存在一个障碍物,箭矢被阻挡,但实际的瞄准轨迹却没有遮挡,造成玩家体验上的诡异感(明明看着没有阻挡,却到达不了落点)。当然,这个问题实际上可以容忍,而且差异越小其实只有在极端情况才有可能发生。
[*]瞄准射线未检测到目标 MaxDist内未检测到目标,则箭矢发射的方向向量终点该以哪个点计算呢?假设存在这样一个Boss场地,是一个高台,场地周围不存在可检测的场景模型,就会出现这种情况。假设以一个距离Dist作为终点计算,如下图中的Dist,那么当上述情况出现时,我们的准心是和下图中2号点的MaxDist处重合的,因为没有检测到目标,箭矢的终点是我们设定的Dist处(2号点射线上的红叉处),则箭矢的发射方向和我们瞄准的方向出现显著差异。因此,场景设计上,尽量不要出现这种检测不到目标的情况,同时设定一个合适的Dist。
4.额外机制
比如箭矢本身附加的特性:电/火/冰等等,击中时效果,是否跟踪/分裂,射箭时的特殊技能等等,这些则属于玩法设计的具体考量了。
页:
[1]