卷积信号与moba游戏的伤害计算

作者:周啸

链接:https://www.zhihu.com/question/22298352/answer/257790355

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

《卷积信号与moba游戏的伤害计算》

在打游戏的时候,假设你对敌方英雄造成了一次攻击。攻击的效果是,地方英雄会在接下来5秒内持续增长的掉血。每秒掉血分别为1 2 3 4 5;那么你在0秒的时候攻击了一下敌方英雄,敌方英雄的掉血情况为:

<img src="https://pic1.zhimg.com/50/v2-3621a4ea1fdb3eab429937190a5d0b51_hd.jpg" data-caption="" data-rawwidth="339" data-rawheight="150" class="content_image" width="339">

卷积信号与moba游戏的伤害计算_第1张图片

抽象一下。假设x[k]是一个单位信号(一次攻击),即仅当k=0时x(k) = 1.假设把这个信号输入到一个系统里面得到的响应为h[n]:

<img src="https://pic3.zhimg.com/50/v2-d31434748c3c73db961c3cdae4764c95_hd.jpg" data-caption="" data-rawwidth="341" data-rawheight="409" class="content_image" width="341">

卷积信号与moba游戏的伤害计算_第2张图片

同样,假设你在第2秒对地方英雄进行了攻击,则敌方英雄会在地2-7秒持续掉血。

由于攻击不是在第0秒,而是在第二秒,因此,产生伤害也是从第二秒开始。使用函数位移的想法了解释,则本来第0秒产生的伤害右移了两个单位,变成了h[n-2]:

<img src="https://pic1.zhimg.com/50/v2-3e1ea2a760edf1d026e1730dd8b1f098_hd.jpg" data-caption="" data-rawwidth="449" data-rawheight="412" class="origin_image zh-lightbox-thumb" width="449" data-original="https://pic1.zhimg.com/v2-3e1ea2a760edf1d026e1730dd8b1f098_r.jpg">

卷积信号与moba游戏的伤害计算_第3张图片

那么,如果第0秒和第2秒都进行了攻击,伤害是怎样的呢?当然是第0秒的伤害加上第2秒的伤害,即:

<img src="https://pic1.zhimg.com/50/v2-b6d67558b0c14d6ca86993fc9fca303d_hd.jpg" data-caption="" data-rawwidth="468" data-rawheight="443" class="origin_image zh-lightbox-thumb" width="468" data-original="https://pic1.zhimg.com/v2-b6d67558b0c14d6ca86993fc9fca303d_r.jpg">

卷积信号与moba游戏的伤害计算_第4张图片

那么,对于任意形式的攻击x[k],很容易推广到,产生的伤害y[n]计算方法为:

<img src="https://pic3.zhimg.com/50/v2-cc9e29e5a97ed21e091950c90a2284c3_hd.jpg" data-caption="" data-rawwidth="280" data-rawheight="95" class="content_image" width="280">

这就是卷积的公式。解释很简单,就是对任意的攻击x[k],产生的伤害就是,把所有k时刻的攻击产生的伤害h[n-k]都叠加起来了。

你可能感兴趣的:(卷积信号与moba游戏的伤害计算)