很多玩家在使用战士游玩的时候,经常遇到卡位现象,向前移动或者追击目标时人物突然停住,无法继续前进,原地无法转向,明明画面上还有空隙,却不能穿过,不管是打怪还是玩家对抗都会出现,严重影响输出和操作。战士本身依靠近身攻击,持续的移动拉扯很关键,一旦发生卡位,很容易被怪物或者对手持续攻击,所以不少玩家想要弄清楚卡位产生的各类原因。
地图碰撞体设置是造成卡位最常见的根源。游戏地图内每一块区域都有隐形的碰撞阻挡数据,不是依靠画面上看到的墙体、石头判定,而是服务端内预先设置好的碰撞格子。部分地图的碰撞数据制作粗糙,地面花草、石块、台阶这类装饰素材,碰撞范围做得比实际贴图更大,看着有空隙,碰撞体已经占据格子,人物就会被卡住。战士模型本身占用的格子尺寸比法师、道士更大,相同的狭窄通道,道士和法师可以顺利通过,战士移动就会触发碰撞判定,直接卡在原地。部分地图的转角、洞口、怪物刷新点位置,碰撞格子重叠,移动时很容易卡进缝隙里面。
怪物碰撞属性也会引发战士卡位。怪物同样带有碰撞体积,默认情况下怪物之间、怪物和玩家之间会互相阻挡。战士近身打怪的时候,多只怪物堆叠在一起,怪物模型相互挤占格子,战士想要穿插移动,就会被怪物的碰撞体挡住,形成卡位。部分怪物的碰撞半径参数设置偏大,怪物模型贴图很小,但是碰撞阻挡范围很大,战士靠近攻击,很容易被怪物本体挡住无法后撤。还有怪物移动逻辑,怪物转向、移动瞬间抢占玩家所在格子,会直接把战士卡在原地。
服务端移动判定与延迟带来的卡位。人物移动指令需要从客户端发送到服务端,服务端校验格子是否允许通行之后,再返回结果给客户端。本地客户端画面已经显示人物向前跑动,但是服务端校验发现目标格子不可通行,就会回滚人物位置,表现出来就是人物跑动一下立刻弹回原地,也就是大家常说的假卡位。网络波动会放大这个现象,本地画面和服务端不同步,战士在追击对手或者拉扯怪物时,频繁出现移动指令校验失败。服务端的移动帧率参数设置偏低,人物坐标更新不及时,连续快速点击移动,坐标计算错乱,也会出现人物卡在格子内。
人物之间碰撞开启会在玩家对抗时造成卡位。当开启玩家碰撞功能,玩家之间互相阻挡,多名角色聚集在狭小区域,战士体型占用格子大,很容易被其他玩家堵住。沙巴克大门、地图窄通道这类地方,多名玩家堆叠,战士很难穿插走位。关闭玩家碰撞之后,玩家模型不再互相阻挡,就不会出现玩家之间卡位,但怪物碰撞依旧生效。很多版本默认开启玩家碰撞,团战的时候战士卡位现象会变得十分频繁。
脚本和地图触发事件也会触发异常卡位。部分地图传送脚本、区域检测脚本在玩家进入指定格子时执行逻辑,脚本执行瞬间短暂锁定人物坐标,造成人物短暂无法移动。还有地图内的区域禁止移动判定,当触发状态标记,人物会直接被固定在当前位置,看起来和普通卡位一样。这类卡位和碰撞体无关,属于逻辑限制,一般离开对应区域就不会再复现。
客户端画面显示和服务端坐标不一致,容易让人误判卡位。客户端贴图只是视觉展示,真正的人物位置、能否移动全部由服务端格子坐标决定。有时候客户端画面上战士和目标之间留有空间,但是服务端坐标判定人物已经贴紧阻挡物,客户端画面没有及时刷新,玩家继续点击移动,不会产生任何位移。这种情况调整网络,降低延迟,能减少发生概率。
针对战士卡位的问题,可以做对应的调整。修改地图碰撞文件,把多余的碰撞阻挡范围缩小,清理多余的隐形碰撞格子,减少地图缝隙卡位。调整怪物碰撞半径,缩小怪物阻挡体积,方便战士近身拉扯。服务端层面调高坐标更新频率,优化移动指令校验逻辑,降低网络不同步带来的坐标回滚。玩家对抗场景如果需要减少卡位,可以关闭玩家之间的碰撞。玩家在操作上,战士尽量不要持续快速点地面移动,遇到狭窄区域放缓移动操作,减少短时间内大量移动指令发送,降低坐标校验出错概率。
区分卡位类型很重要,碰撞体造成的实体卡位,人物会固定在格子无法移动;网络不同步造成的假卡位,原地等待片刻或者小幅调整点击位置,人物就可以恢复移动。地图、怪物碰撞相关的改动需要修改对应资源文件,调整完成之后需要重启服务端,新的碰撞参数才会生效,仅修改客户端贴图,无法解决底层碰撞格子带来的战士卡位问题。
传奇战士PK打怪频繁出现卡位,人物移动卡住无法行动原因全面解析
来源:
作者:
点击:

