在开发游戏的时候,我们会遇到这样的需求,当人物的攻击落到敌人身上时,播放特效,声效,产生伤害..........等等一系列要求。
那么我们要怎么实现呢。
先了解一下怎么添加动画帧事件
https://blog.csdn.net/qq_15020543/article/details/83443966
1.为目标位置添加碰撞体
为什么会想到这一点呢,
- 之前风靡全国的拳皇系列,它的人物攻击判定就是使用的矩形碰撞盒。而且就Unity而言,我想到的是根据动画,每帧更新碰撞框的位置。
- 现在的怪物猎人,他会根据你攻击巨型怪兽的不同部位来计算伤害和特效。
就以上两个例子而言,似乎只有添加碰撞体方能解决问题,这种方式虽然准确,但无疑增加了开发者的劳动量。(这无可厚非,因为这能为玩家提供更好的游戏体验。)
2.利用动画帧事件来进行伤害判定和特效生成
这种方式适用于对击打判定精度要求不太高的游戏。
- 流行的MOBA游戏,英魂之刃,混沌与秩序之英雄战歌,虚荣
- LOL,DOTA2.
这些游戏都有一个特点,那就是近战英雄的攻击,只会判定打没打到,而不是打到了哪个部位。(远程英雄是发射子弹的,这里不谈),如果还应用第一种方式来判定伤害的话,无疑会造成性能上的浪费,因为我们没必要判定打到了哪里。
所以我们不需要再多余的给人物某个部位添加碰撞体,这将毫无意义。
我们需要做的只是将计算伤害的时间点把握好,添加帧事件,当这个动画播放到这里的时候,就执行这个事件。
这也同时解决了攻击前摇,后摇,硬直等一系列的问题。只要自己在代码层面上安排好,这些都不是问题。