unity3d 动画中断并重新播放的解决办法

本文介绍了一种在Unity中实现游戏动画状态机的方法,重点讲解如何处理动画的中断与重播,例如玩家在受到连续攻击时如何流畅地切换被击中动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果想中断某个正在播放的动画,然后重新播放?

比如玩家被敌人击中了,正在播放被击中的动画,不巧紧接着玩家又被敌人击中一次,此时就得中断动画并重新播放。

解决办法:假设正常状态的动画为Normal,被击中状态的动画为Hit,考虑到Any State 能中断正在播放的动画,自然需要它。最后再加上一个Iterrupt 动画(不改变任何东西,且其时间设置的非常短)。示意图如下:

205739_Xyq7_1411233.jpg

设置两个Trigger:hitTrigger 和 iterruptTrigger。

其中,Any State -> Iterrupt 为 iterruptTrigger, Normal -> Hit 为 hitTrigger,其他转换条件为默认方式。

//关键代码
//如果正在播放的动画为被击中动画
if(anim.GetCurrentAnimatorStateInfo(0).nameHash == hitNameHash){
anim.setTrigger("iterruptTrigger");
}else{
anim.setTigger("hitTrigger");
}

参考:http://unity3d.9tech.cn/news/2014/0408/40168.html

转载于:https://my.oschina.net/tekie/blog/308532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值