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

【Unity】animator检测某state动画播放完毕方法

博主对动画系统很不熟,可能使用的方法比较曲折,但是我确实没找到更有效的方法了。

unity的这个animator在我看来简直有毛病啊,为什么那么难以获取某状态动画的信息呢???

想要知道动画播完没有只有用normalizedTime>1f,我们来看看gpt给的normalizedTime的定义

unity官方文档写的定义

我天真的觉得只要不勾选animation clip的loop time,就可以正常检测完播了,完全不行哈(如果只需要检测一次完播可以用这个)

我测试得出的结论是,animator会一直计数这个状态的播放时长(即使是从该状态转移到另一状态再转移回来),整数部分表循环次数,小数部分表播放百分比,但是它不是绝对精准的,至少在我2022的unity版本里不精准。因此放弃使用normalizedTime来检测完播

解决方案:

建立一个新的脚本 AnimationEventHandler挂载在animator所在物体上,再给要检测完播的animation clip里添加事件(add event),调用AnimationEventHandler里的方法(必须是public)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnimationEventHandler : MonoBehaviour
{
    // 挂在有animator的物体上
    [HideInInspector]public bool isAnimationEnd = false;// 动画是否播放完毕
    public void OnAnimationEnd()
    {
        Debug.Log("动画播放完毕!");
        isAnimationEnd = true;// 设置动画播放完毕
    }

}

添加事件

相关文章:

  • C高级,终端操作
  • 如何保证RabbitMQ消息的可靠传输?
  • 【Scratch编程系列】程序积木-外观类
  • 1101复位之后故障仍保持原因分析
  • 交换机和集线器的区别
  • Compose笔记(十四)--LazyColumn
  • 计算机系统---性能指标(1)CPU与GPU
  • 横扫SQL面试——PV、UV问题
  • 语法: i8=make8( var, offset);
  • 3D Gaussian Splatting as MCMC 与gsplat中的应用实现
  • Python面向对象-开闭原则(OCP)
  • Access:在移动互联网与AI时代焕发新生
  • ReFormX:现代化的 React 表单解决方案 - 深度解析与最佳实践
  • sojson。v5:新一代JavaScript代码保护工具的技术解析与应用场景
  • 代码随想录回溯算法03
  • Spring 中的 IOC
  • Unet网络的Pytorch实现和matlab实现
  • 洛谷每日1题-------Day37__P1634 禽兽的传染病
  • Xorg 内存上涨的根源探究
  • 存储引擎 / 事务 / 索引
  • 网站如何静态化/专业网站推广引流
  • 王爷好大受不了txt下载/站内seo的技巧
  • 如何在360网页上做公司网站/网站维护中是什么意思
  • 做门名片设计网站/北京网站制作400办理多少钱
  • 网站百度无排名/抖音自动推广引流app
  • 高端网站建设公司有哪些项目/国内免费域名注册