打开网易新闻 查看更多图片

什么是碰撞体积

在DOTA2世界中,凡是可以交互的对象都存在一个范围,这个范围被称为碰撞体积。

一个典型的碰撞体积应用是卡兵。

在游戏文件中,碰撞体积没有明确的数值,而是分为几种(括号内为具体数值):

  • 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%穿过沟壑的。

打开网易新闻 查看更多图片

瞄着缝扔矛

举一反一,巨牙海民的冰片也是可以穿过去的,如图。

需要注意的是,显示碰撞体积的命令只能在开启作弊时使用,因此匹配中无法使用。