在角色踢腿达到最高时执行一个操作及在子弹接连几次集中统一个敌人时,敌人能即时重播受伤动画

一.先说第一个问题。
问题:有时我们需要控制在角色播放动画的某一刻去执行某些操作,例如在主角挥刀到水平位置时,要创建一个挥刀特效。当角色踢腿达到最高时,要执行一下其他的操作等等
分析:这主要是控制动画的执行过程,找到能控制动画播放的属性,同时查看动画播放到指定动作的时间,就可以执行上面要求的操作。
解决:我测试了当角色踢腿到最高位置时打印一次“检测成功语句”;
在AnimatorStateInfo中有一个NormalizedTime属性,它记录着某一个动画状态单元在开始执行到当前位置的百分比。如果这个动画单元是循环播放或是在播放完时保持状态不切换,此时NormaliezdTime的值会大于1.使用该属性乘以动画的总帧数,那么就会得出此时动画走到了哪一帧,这样跟预先设置好的动画帧进行比较,大于该值时就认为退踢到了最高处,此时打印“检测成功语句”;
如图一:
在这里插入图片描述

下面是脚本代码:
在这里插入图片描述
出了上述的主要过程意外其他的参数是为了实现更好的调试效果,而不是必要的。
动画状态机的模式为:
在这里插入图片描述

执行结果为:
在这里插入图片描述

二.
问题:射击类游戏中,向一个敌人连续多次地射击,动画却每次总是将受伤动画播放完才重新开头播放,这样导致效果很不好,我希望的是,敌人在收到下一次的射击时能够立刻,结束当前的动画播放,而从头开始播放。
分析:一个动画正在播放是没有办法让他停止而再去重播,,所以不能再一个动画单元上下功夫。
解决:在动画控制器中创建两个受伤动画单元,hurt1,hurt2,再设置一个int型的参数count,使他自增。规定当count为奇数时播放hurt1,当count为偶数时为hurt2,取消动画切换时的has exit time属性,这样在两个动画单元间就可以实现立刻切换的效果。
因为思路比较简单就不再拉入demo了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值