作者han960691 (han)
看板OverWatch
标题[讨论] 拦路猪钩子的命中计算机制
时间Fri Oct 7 11:07:57 2016
原文:
https://goo.gl/XShMQx
此篇报导讲解拦路猪的勾子命中计算的背後机制
一直以来相信大家都对於拦路猪的勾子命中机制颇有怨言
像是躲在猪视线外墙角落、或是从勾子上方跳/瞬移过去(源氏、闪光)等
都会被奇妙的异次元勾钩中
原本网路上的猜测是可能是因为网路延迟或是hitscan*的运算命中机制而导致
(注:勾子像条瞬间发出的光线,按下去在直线路径上的角色就算被钩)
然而Blizzard公开回应拦路猪勾子判断机制如下:
基本上就是在勾子尖端放颗命中判断的球体
直线投射出去,只要在球体内范围即是命中范围,
所以才会有像是原文影片里面那种隔墙勾人或是跳过勾子上方也会被钩的状况发生
所以以後对面有拦路猪的时候、记得躲墙角要离得远一点
不然即使不在勾子钩中的直线范围内还是有可能会被命中的
所以根本就不是勾子,是一颗棘铁球啊...
但这篇没有解释为什麽有时候源氏开反弹还会被勾的情况
可能猜想钩子的圆球范围碰到源氏可反弹范围的外侧触发钩中的判断
但源氏的正面反弹范围真的不是想像中的大
reddit测试反弹范围文与影片:
https://goo.gl/5bYPIZ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.110.57.143
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/OverWatch/M.1475809681.A.DBE.html
1F:推 cody880528: 因为判定命中范围的球体没有经过场景墙壁的cliping运 10/07 11:19
2F:→ cody880528: 算 10/07 11:19
3F:→ cody880528: 这写在哪里啊 没看到@@ 10/07 11:19
那句原本是我个人看文章後的推导,回头看了一下好像对翻译文章有点失准
我把它删掉好了
4F:推 CryMasK: 我遇过看着钩子从我旁边穿过 想说躲过了 下一秒突然被勾 10/07 11:21
5F:→ CryMasK: 中 钩子的动画像是突然瞬移一样 不知道是不是这原因 10/07 11:21
因为在球体范围中所以他会先让钩中的角色瞬移到勾子判定钩中的位置
再拉回来,所以才会有瞬移状况发生吧
6F:推 CryMasK: 钩子从旁边穿过 —> 命中动画(瞬移到正中央) 10/07 11:23
7F:推 DarkArbiter: 事实上就是现在的勾太唬烂了 所以大家被勾到很赌烂 10/07 11:27
8F:推 sweep1357: 拿训练机器人测过钩子命中范围大概是小圆形准心大小 10/07 11:28
9F:→ sweep1357: 这意思是即使躲墙後但如果在小圆形范围内也会被勾? 10/07 11:30
没错
10F:推 wiork: 应该是吧,躲墙後稍微在铁钩球范围就算命中拉过去 10/07 11:35
11F:嘘 TsaiMoshia: 钩子不是瞬间到。 10/07 11:35
那个注释是解释大家之前以为是hitscan的注解
blizzard解释的就像是一颗看不见的磁铁铁球丢出去,途中经过的范围有角色就会被钩
12F:推 cody880528: 那这样不是勾的问题吧 其他东西也都能隔墙射到阿 10/07 11:38
13F:→ cody880528: 单纯hitbox大而已吧 10/07 11:38
hitbox是指每个角色模组身上的攻击范围,
勾子的命中范围不会改变角色模组的hitbox大小
hitbox大 = 因为要判别钩中/不钩中所以每个角色都有专门给钩子判断的大hitbox
他的命中机制不是这样设计的
14F:推 moonlind: 原来是陈可汉 10/07 11:38
刚好都是犯罪者XD
15F:推 cody880528: 所以这篇就会是 因为判定命中是球体 导致会被隔墙勾 10/07 11:56
16F:→ cody880528: 感觉不太合理吧 10/07 11:56
17F:→ cody880528: *就会 -> 结论 10/07 11:57
画张图解释好了
http://imgur.com/a/q6J28
(比例随便画的不要当真)
橘色半透明范围就是在勾子尖端的命中范围,只要在范围内的角色就会被判定为被钩
当猪对墙角射出勾子勾子抵达墙角时时,站在墙背面的角色没在钩子的直线上
但是因为勾子的命中判断是以尖端为圆心的一个范围,
所以即使站在墙角後的角色也会被钩,
所以这就回到我原本推测没有对地图做的cliping的那句话,
如果要在墙角後面的角色不被钩中,就要对墙壁的延伸面做出cliping(黑色框)
这样命中圆球就不会超出墙角范围
18F:推 david8234: 就跟莱茵随缘撞一样吧 明明闪开还是被吸过去撞= = 10/07 12:00
19F:→ doomleika: 被吸过去是lag 10/07 12:00
我个人是怀疑莱茵撞也是这种机制...
基本上出现的状况蛮像的(被判定命中角色就会瞬移到角色面前)
20F:推 cody880528: 那如果你的推论是对的 我直接朝墙壁射 也可以勾到人 10/07 12:23
21F:→ cody880528: ? 10/07 12:24
可能要实验一下,但个人认为不会
因为两者不一样 直接朝墙壁射勾子中墙的时候命中范围球体和墙壁界线有直接相交
所以应该会做cliping (不做就太蠢了)
球体与直线的cliping计算方式蛮简单的 超过直线以上(例如x=0,y=0以上的判定不考虑)
但勾墙角的时候因为勾子没有跟墙壁范围有直接的接触命中,不会对墙壁做cliping
所以现在的现况就是没对墙壁延伸线做cliping才会出现打中墙角後的角色的状况
^
: <-命中球体没有跟墙壁直角的"延伸线"做cliping
角色:
---------------
wall | c
--------------- /
/
/
22F:推 qscgg: 简单的说就是丢钩子的时候会瞬间出现一支棒棒糖,有碰到棒 10/07 12:37
23F:→ qscgg: 棒糖的都算被勾到,你往墙角丢一样可以勾墙後的 10/07 12:38
24F:→ cody880528: 嘿啊 但是如果棒棒糖的头可以穿墙 那应该不限墙角 你 10/07 12:41
25F:→ cody880528: 在墙後哪里都可以勾过来阿 10/07 12:41
26F:推 chalon: 不能穿墙啊 谁跟你说可以 10/07 12:43
27F:→ chalon: 图都那麽清楚了 10/07 12:43
28F:推 iamnotgm: 那下次花村a点跳洽洽我不就一直对墙边盲勾用力勾机会多 10/07 12:45
29F:推 cody880528: 我自己觉得的解释是 10/07 12:52
30F:→ cody880528: 1 所有投射物都是射球出来 10/07 12:52
31F:→ cody880528: 2 猪的勾子是投射物 10/07 12:52
32F:→ cody880528: 3 角色hitbox本来就会超出墙角 (事实) 10/07 12:52
33F:→ cody880528: 4 勾子的球射到hitbox 判定拉到 把别人拖过来 10/07 12:52
34F:→ cody880528: 就跟半藏可以射到墙後面的意思一样 10/07 12:52
35F:推 shinelusnake: 所以其实钩子不是立即判定 而是看钩子头有没有碰到 10/07 12:57
36F:→ shinelusnake: 咯? 10/07 12:57
37F:推 cody880528: 我是觉得如果照原PO说的加个判定就解决的话 10/07 13:01
38F:→ cody880528: BZ应该老早就修好了 10/07 13:01
你的理解跟我讲的一样啊XD (除了hitbox超出墙角这部分)
我讲解cliping的情况其实很简化,游戏里面有许多不规则的物体/障碍物
要即时运算球体穿过环境障碍物边界的延长线再去做判断其实颇难
39F:推 sedc: 勾的球体本身应该有做个检查是球体圆心和目标是否直接可视, 10/07 13:07
40F:→ sedc: 是的话就视为勾到。但没有计算猪本身和目标物是否直接可视 10/07 13:07
41F:→ sedc: 所以会形成「勾看得到你,但猪看不到你」而仍然被勾的情况 10/07 13:09
我也觉得这样比较好,比起对环境做cliping
对可视范围做cliping比较合理
42F:推 Nevar: 其实没遇过刀举起来还被勾走的情况欸 10/07 13:29
我朋友有遇到几次,shadder实况也有遇到几次过
43F:推 OverRaven: 其实不是钩子 是能晕人+黏人的铁球 10/07 13:57
※ 编辑: han960691 (27.110.57.143), 10/07/2016 14:15:52
※ 编辑: han960691 (27.110.57.143), 10/07/2016 14:17:04
44F:→ dxzy: 原来招架的范围大得这麽夸张难怪弹回来这麽猛 一堆打偏都弹 10/07 14:20
45F:→ dxzy: 停玩OW一段时间後回来觉得超过极限距离结果还是被勾中 10/07 14:21
46F:→ dxzy: 但训练场测试一样还是20米多一点(大概只有我QQ) 10/07 14:22
47F:推 frozensummer: 最近常碰到勾到闪光被回朔吃掉 这是什麽情况 10/07 14:31
48F:→ frozensummer: 如果是PING差异 12PING应该不会有这种事情发生 10/07 14:31
49F:→ justsay: 那个是tick问题 不过不是改60了吗 10/07 14:33
50F:→ dxzy: 关於这个喔 即使tick调高了 对面的网路也会改变世界的真理 10/07 14:40
51F:→ dxzy: 我上次碰到一只猪(在NG半夜我猜是外国玩家)小美冰箱被拉破打 10/07 14:41
52F:→ dxzy: 还不是一次是三次 我提早半秒冰箱他钩子过来就破了被拉过去 10/07 14:41
53F:→ dxzy: 不信邪的下场就是整场被拉着打 只差机制改过否则墙档都会被| 10/07 14:45
54F:→ Chikei: server状态运算tick一直都是60,别再说啥改60了..... 10/07 15:26
55F:→ Chikei: 所谓的20改60是server送更新给client的速率,server运算之 10/07 15:27
56F:→ Chikei: 前就有人验证是60 10/07 15:27
57F:→ frozensummer: 之前没这种问题 某次更新後常常勾到被回朔 被影袭 10/07 15:33
58F:→ frozensummer: 现在感觉三个法拉杯距离拉大了 要先预判多一点 10/07 15:36
59F:→ frozensummer: 不然就是要等对手用完招才比较稳 10/07 15:36
60F:推 intotherain: 所以勾子其实是AOE啊... 10/07 16:26
61F:→ dxzy: 范围不算大算不上AOE吧... 10/07 16:43
62F:推 jaannddyy: 所有东西都是aoe 数学上的点并不存在,即使要用数学描 10/07 19:10
63F:→ jaannddyy: 述真的点,也是用dxdydz去做 10/07 19:10
64F:→ dxzy: you are right 10/07 19:18
65F:推 a8500249: 还有死神无敌小美冰箱进cd还被勾的情况也没解释 10/07 22:43
66F:→ dxzy: 但很少耶 我有时故意给别的猪勾都挡得住 10/07 22:48
67F:→ dxzy: 结果今天打rank碰到冰箱被....好像法拉打爆 总之不是技能 10/08 09:50
68F:→ dxzy: 但是深夜对方像外国人 我觉得这是tick的锅啦 死BUG 10/08 09:50