当前位置: 首页 > article >正文

Unity如何判断Animator当前播放的动画已经结束

        今天工作中遇到了一个问题,判断当前的动画什么时候播放完成,然后作出下一步动作,然后积累了下代码,发布了出来!

这里我使用的关键方法为:AnimatorStateInfo stateInfo;stateInfo.normalizedTime >= 1.0f 来表示动画的标准化时间已经达到或超过1.0,即动画的播放进度

具体内容如下:

      首先,示例为场景中有一个角色,自带有一个Animator,即myAnimator,并且有一个动画状态-Attack,我们要播放这个动画,当动画播放结束后打印一条信息

        代码如下

public class MyPanel : MonoBehaviour

[SerializeField]
private Button m_BeginAniBt;

[SerializeField]
private Animator myAnimator;

private bool m_CurState = false;

void Start()

{

        m_BeginAniBt.onClick.AddListener(OnBeginAni);

}

public void OnBeginAni()
 {

        myAnimator.Play("Attack");

        m_CurState = true;
 }

void Update()

{

        AnimatorStateInfo stateInfo = myAnimator.GetCurrentAnimatorStateInfo(0);

        if(m_CurState)
        {
            if (stateInfo.IsName("Base Layer.Attack"))
            {
               //判断当前是否播放超过1.0f,即播放完成

                if (stateInfo.normalizedTime >= 1.0f)
                {
                            m_CurState = false;

                             //Attack攻击动画完成

                            Debug.Log("Attack End");
                }
            }
        }

}


http://www.kler.cn/a/454562.html

相关文章:

  • LabVIEW应用在工业车间
  • Substrate Saturday 回顾:如何利用 Polkadot Cloud 扩展 Solana 网络服务?
  • jenkins集成工具(一)部署php项目
  • 两种不同的LuaBehaviour生命周期绑定
  • 《机器学习》——利用OpenCV库中的KNN算法进行图像识别
  • 如何为运行在 PICO 4 Ultra 设备上的项目设置外部文件读写权限?
  • Go的Slice如何扩容
  • 游戏引擎学习第57天
  • 「下载」5G智慧园区整体解决方案:架构IOC核心平台层,信息全面集成共享
  • uni-app使用web-view遇到的问题
  • vxe-table 实现跨行按钮同时控制两行的编辑状态
  • Flink CDC MySQL 同步数据到 Kafka实践中可能遇到的问题
  • SpringBoot揭秘:URL与HTTP方法如何定位到Controller
  • Excel中一次查询返回多列
  • golang实现生产者消费者模式
  • 随机变量是一个函数-如何理解
  • 【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存
  • 算法题(17):删除有序数组中的重复项
  • k8s coredns
  • 简单发布一个npm包
  • Ubuntu 24.04.1 LTS 配置静态固定IP地址
  • 计算机专业文献检索期末论文
  • 计算机网络——期末复习(3)4-6章考试重点
  • 零基础微信小程序开发——页面导航之编程式导航(保姆级教程+超详细)
  • 爬虫数据存储:Redis、MySQL 与 MongoDB 的对比与实践
  • 007-利用切面计算方法耗时