Unity animator不剪辑动画实现 分段播放动画
程序员文章站
2022-05-04 11:50:08
...
public Animator anim;
private AnimatorStateInfo animInfo;
/// <summary>
/// 控制动画暂停和播放
/// </summary>
int playSpeed = 0;
void Update()
{
animInfo = anim.GetCurrentAnimatorStateInfo(0);
//判断正在播放Take 001动画
if (animInfo.normalizedTime < 0.99f && animInfo.IsName("Take 001"))
{
//第一段动画
if (animInfo.normalizedTime > 0.19 && animInfo.normalizedTime < 0.2)
{
//达到条件时暂停播放动画
print("暂停播放1");
anim.speed = playSpeed;
}
//第二段动画
else if (animInfo.normalizedTime > 0.39 && animInfo.normalizedTime < 0.4)
{
print("暂停播放2");
anim.speed = playSpeed;
}
else
{
//自动设置回停止播放条件
playSpeed = 0;
}
}
}
/// <summary>
/// 开始播放动画
/// </summary>
private void PlayAnim()
{
//设置播放动画条件
playSpeed = 1;
}
animInfo.normalizedTime 动画状态标准化时间,一段动画值为从0~1。到1则动画播放完毕
animInfo.IsName("Take 001") 当前播放的动画,Take 001是动画名称
原理:首先要知道每段动画结束帧,然后该段动画结束帧除于总帧得到该结束帧在animInfo.normalizedTime 的值,最后作为条件暂停动画,继续播放动画可实现下一段动画的启停。
比如:有一个动画100帧,不剪辑,需要播放多段动画。
得知第一段的结束帧在20帧,那么20/100=0.2,0.2则为normalizedTime 值作为动画暂停条件(写条件的时候可以设个范围)。
上一篇: python爬虫基础 --爬取有道翻译
下一篇: python爬虫有道词典翻译