原文由我发于微博 @DotA中文Wiki(https://dota.huijiwiki.com),欢迎关注。
注:本文内容对7.24b版本生效,不排除后续更新导致本文内容过时/失效的情况发生
什么是碰撞体积
在DOTA2世界中,凡是可以交互的对象都存在一个范围,这个范围被称为碰撞体积。
一个典型的碰撞体积应用是卡兵。
在游戏文件中,碰撞体积没有明确的数值,而是分为几种(括号内为具体数值[1]):
- DOTA_HULL_SIZE_BUILDING (298)
- DOTA_HULL_SIZE_TOWER (144)
- DOTA_HULL_SIZE_BARRACKS (144)
- DOTA_HULL_SIZE_FILLER (96)
- DOTA_HULL_SIZE_HUGE (80)
- DOTA_HULL_SIZE_HERO (24)
- DOTA_HULL_SIZE_REGULAR (16)
- DOTA_HULL_SIZE_SIEGE (16)
- DOTA_HULL_SIZE_SMALL (8)
- DOTA_HULL_SIZE_SMALLEST (2)
不同单位的碰撞体积如下图所示。
顺便一提,狼人终极技能----变身的技能说明是错误的。变狼后碰撞体积没有发生变化,仍然是8。
测试模式下,在控制台中输入dota_unit_show_collision_radius 1 可以将单位的碰撞体积以黄色表示出来,如图。
需要特别注意的是,碰撞体积的大小与模型肥瘦、选中单位后的光圈大小没有任何关系。
如图所示,狼人的选择光圈与其他人是相同的,但其碰撞体积显然小于其他单位
碰撞体积的应用
那么碰撞体积与天怒A杖大招有什么关系呢?
前面说到,碰撞体积是用于技能交互的。对于大部分AOE技能来说,他们的交互机制是:
如果技能的作用面积与碰撞体积有交集(重叠的地方),则造成伤害。
我们知道,天怒A杖大是不会对一个已经收到大招影响的单位再次放大的,那么这个判定也是靠碰撞体积是否重叠来判定的吗?
事实证明,不是。事实上,这个判定采用的是坐标判定:如果目标单位的坐标在一个神秘之耀的作用范围外,那么系统就有可能选择这个目标,对其坐标位置施放额外的一次大招。
简单总结一下:
1.受伤与否是碰撞体积判定,面积重叠就受伤;
2.是否施放二次大招是坐标判定。
根据这两点,不难找到其中的“漏洞”:
如果我放大的位置距离敌方英雄的距离大于神秘之耀的作用范围,但离得又不是太远,大招的范围和敌方英雄的碰撞体积又有重叠,不就可以让他受到2次伤害了吗?!
采用上述方式对单一敌方英雄施放A杖大招,可以看到确实造成了2次伤害
作为对比,图中大招施放的位置稍微靠近了敌方英雄一点,可以看到只造成了1次伤害
除此之外,一些可以制造地形的技能(如沟壑、冰片)也会用到碰撞体积的知识来解释问题。
首先认识一下沟壑的碰撞体积。
如图,可以看到沟壑实际上是由一块一块小的碰撞体积组成的,而不是由一个整体组成的。
饰品不会影响沟壑的组成
图为玛尔斯矛的碰撞体积。
图为矛穿到英雄后矛和英雄的碰撞体积相互关系。
直观的看到了沟壑的碰撞体积组成后,我们可以瞄准碰撞体积间的缝隙,向缝隙处扔矛。根据我的测试,只要站位角度合适且瞄准了位置,是可以做到100%穿过沟壑的。
瞄着缝扔矛
举一反一,巨牙海民的冰片也是可以穿过去的,如图。
需要注意的是,显示碰撞体积的命令只能在开启作弊时使用,因此匹配中无法使用。
参考
^游戏文件中并没有明确写出碰撞体积的具体数值,括号内的数值为根据历史经验、英文版dota2 wiki、liquipedia wiki整理而来,可能会与实际情况存在一定出入 https://dota.huijiwiki.com/p/7583
作者:韩松
专栏地址:https://zhuanlan.zhihu.com/p/110771437
|