unity动画状态机判断动画完成

2015年01月19日 13:58 0 点赞 0 评论 更新于 2025-11-21 14:49

在泰斗社区看到了关于Unity状态机判断动画完成的帖子,考虑到可能有其他开发者也会有此需求,现在将其分享如下。

1. 脚本参考

在Unity中,我们可以使用AnimatorStateInfo.normalizedTime来判断动画是否完成。下面是关于normalizedTime的详细信息:

AnimatorStateInfo.normalizedTime

float normalizedTime;

描述

该属性表示动画状态的归一化时间。其整数部分代表该状态已经循环的次数,小数部分则表示当前循环的进度百分比(范围是 0 - 1)。

2. 示例代码

以下是一个简单的示例代码,展示了如何使用normalizedTime来判断动画是否播放完成:

using UnityEngine;

public class AnimationCompletionChecker : MonoBehaviour
{
private Animator animator;

void Start()
{
// 获取当前对象的Animator组件
animator = this.GetComponent<Animator>();
}

void Update()
{
// 获取当前动画状态的信息,参数0表示第一层动画层
AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);

// 判断动画是否播放完成
if (info.normalizedTime >= 1.0f)
{
// 当动画播放完成时,执行相应的操作
DoSomething();
}
}

void DoSomething()
{
// 这里可以添加动画完成后要执行的具体逻辑
Debug.Log("Animation has completed!");
}
}

在上述代码中,我们首先在Start方法中获取了当前对象的Animator组件。然后在Update方法中,通过GetCurrentAnimatorStateInfo(0)获取当前动画状态的信息,并检查normalizedTime是否大于等于 1.0f。如果满足条件,则调用DoSomething方法执行动画完成后的操作。

请注意,上述代码仅是一个简单示例,你可以根据实际需求修改DoSomething方法中的具体逻辑。

作者信息

feifeila

feifeila

共发布了 3994 篇文章