浅谈DOTA2中的碰撞体积

作者:韩松 2020-03-10

原文由我发于微博 @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

最新评论
暂无评论
参与评论

商务合作 查看更多

编辑推荐 查看更多