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

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

那么我们要怎么实现呢。

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

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

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

 

为什么会想到这一点呢,

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

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

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

 

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

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

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

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

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

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

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

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值