Unity 给Animator动画添加事件(动态的)
这是unity里面的Animator 一共俩个状态一个静止一个攻击,下面是图片
下面是代码挂在人物上即可,自己可以运行打印一下
using System.Collections; using System.Collections.Generic; using UnityEngine; public class AnimatorEc : MonoBehaviour { public Animator ani;//人物的动画状态机 public TrailRenderer trail; //拖尾效果 private AnimationClip[] clips; //动画的集合 // Use this for initialization void Start () { clips = ani.runtimeAnimatorController.animationClips; AnimationClip clip = clips[1]; //因为我的是在第二个,用的话需要自己设定clip[int] AddAnimationEvent(ani, clip.name, "StartEvent", 0); AddAnimationEvent(ani, clip.name, "HalfEvent", clip.length * 0.5f); AddAnimationEvent(ani, clip.name, "EndEvent", clip.length); } private void Update() { if (Input.GetMouseButtonDown (0)) { ani.SetBool("fack", true); } else { ani.SetBool("fack", false); } } /// <summary> /// 给动画添加新的事件 /// </summary> /// <param name="_Animator"> 人物的状态机</param> /// <param name="_ClipName">动画的名称</param> /// <param name="_EventFunctionName">时间/秒</param> /// <param name="_time"></param> private void AddAnimationEvent(Animator _Animator, string _ClipName, string _EventFunctionName, float _time) { AnimationClip[] _clips = _Animator.runtimeAnimatorController.animationClips; for (int i = 0; i<_clips.Length; i++) { if (_clips[i].name == _ClipName) { AnimationEvent _event = new AnimationEvent(); _event.functionName = _EventFunctionName; _event.time = _time; _clips[i].AddEvent(_event); break; } } _Animator.Rebind(); } private void StartEvent() { Debug.Log("开始播放动画"); } private void HalfEvent() { trail.emitting = true; Debug.Log("动画放到一半的时候"); } private void EndEvent() { trail.emitting = false; Debug.Log("动画结束的时候"); } /// <summary> /// 清除所有的事件 /// </summary> private void ClearAllEvent() { for (int i = 0; i<clips.Length; i++) { clips[i].events = default(AnimationEvent[]); } Debug.Log("清除所有事件"); } private void OnDestroy() { ClearAllEvent(); } }
判断动画是否播放结束
if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime>1.0f
当大于1 的时候就播放结束了
感谢各位的阅读,谢谢大家
End
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器