您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页Unity的动画重新播放暂停继续播放(AnimationAnimator)解决动画像播电影。。。

Unity的动画重新播放暂停继续播放(AnimationAnimator)解决动画像播电影。。。

来源:飒榕旅游知识分享网
Unity的动画重新播放暂停继续播放(AnimationAnimator)解决

动画像播电影。。。

⼀. 重新播放

Animator.Play(state, layer, normalizedTime)

normalizedTime值得范围是0-1,当normalizedTime为0时就可以做到重播的效果

通过设置normalizedTime的值可以做到让动画从某⼀个位置播放(解决动画上⼀步下⼀步的播放问题)

layer是从0开始的

⽐如有⼀个叫“hit”的动画,在layer 0层中则

animator.Play(\"hit\", 0, 0f);

⼆. 暂停和继续播放

1. Animotor

// 播放

animator.Play(\"ani_name\");

//animator.SetBool(isPlay,true)//切换动画状态机,的⽅式播放动画// 暂停

animator.speed = 0;// 继续播放

animator.speed = 1;

2. Animation

// 播放

animition.Play(\"ani_name\");// 暂停

animition[\"ani_name\"].speed = 0;// 继续播放

animition[\"ani_name\"].speed = 1;

三、从动画某⼀帧开始播放

//当前动画机播放时长

currentTime = anim.GetCurrentAnimatorStateInfo(0).normalizedTime;//动画⽚段长度

float length = anim.GetCurrentAnimatorClipInfo(0)[0].clip.length;//获取动画⽚段帧频

float frameRate = anim.GetCurrentAnimatorClipInfo(0)[0].clip.frameRate;//计算动画⽚段总帧数

float totalFrame = length / (1 / frameRate);//计算当前播放的动画⽚段运⾏⾄哪⼀帧

int currentFrame = (int)(Mathf.Floor(totalFrame * clipTime) % totalFrame);(clipTime改为currentTime

) Debug.Log(\" Frame: \" + currentFrame + “/” + totalFrame);

///从某⼀帧开始播放动画

public void OnPlayAnimatorFromFrame(string stateName,float frame){

anim.Play(stateName,0,frame); playSpeed=1;

}

void OnClick(){

  if(!animInfo.IsName(\"idel\"))  {

    var frame=frameTemp/TotleFrame;//frameTemp为当前位置的帧值,在配置表中获取;TotleFrame为当前动画总帧数    if(frame>=0&&frame<1)   {

     OnPlayAnimatorFromFrame(anim.GetCurrentAnimatorClipInfo(0)[0].clip.name,frame);   }  }}

四、进度条控制动画 播放

public Slider AnimatorSlider;

void Start(){

AnimatorSlider.onValueChanged.AddListener(OnSliderController); }

void OnSliderController(float value){

  if(anim!=null&&!animInfo.IsName(\"idel\"))   {

    OnAnimatorPlay(anim.GetCurrentAnimatorClipInfo(0)[0].clip.name,value);  }

}

public void OnAnimatorPlay(string stateName,float frame) { 

  anim.Play(stateName,0,frame);   }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务