Unity实战篇:讨论动画过程和计算伤害之间的关系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15020543/article/details/83422167

在开发游戏的时候,我们会遇到这样的需求,当人物的攻击落到敌人身上时,播放特效,声效,产生伤害..........等等一系列要求。

那么我们要怎么实现呢。

先了解一下怎么添加动画帧事件

https://blog.csdn.net/qq_15020543/article/details/83443966

1.为目标位置添加碰撞体

为什么会想到这一点呢,

  • 之前风靡全国的拳皇系列,它的人物攻击判定就是使用的矩形碰撞盒。而且就Unity而言,我想到的是根据动画,每帧更新碰撞框的位置。
  • 现在的怪物猎人,他会根据你攻击巨型怪兽的不同部位来计算伤害和特效。

就以上两个例子而言,似乎只有添加碰撞体方能解决问题,这种方式虽然准确,但无疑增加了开发者的劳动量。(这无可厚非,因为这能为玩家提供更好的游戏体验。)

2.利用动画帧事件来进行伤害判定和特效生成

这种方式适用于对击打判定精度要求不太高的游戏。

  • 流行的MOBA游戏,英魂之刃,混沌与秩序之英雄战歌,虚荣
  • LOL,DOTA2.

这些游戏都有一个特点,那就是近战英雄的攻击,只会判定打没打到,而不是打到了哪个部位。(远程英雄是发射子弹的,这里不谈),如果还应用第一种方式来判定伤害的话,无疑会造成性能上的浪费,因为我们没必要判定打到了哪里。

所以我们不需要再多余的给人物某个部位添加碰撞体,这将毫无意义。

我们需要做的只是将计算伤害的时间点把握好,添加帧事件,当这个动画播放到这里的时候,就执行这个事件。

这也同时解决了攻击前摇,后摇,硬直等一系列的问题。只要自己在代码层面上安排好,这些都不是问题。

总结:这两点并不冲突,可以取其中之一,也可以混合使用,具体项目,具体分析。

猜你喜欢

转载自blog.csdn.net/qq_15020543/article/details/83422167