unity3d animationunity3D控制动画播放进度
1.如何获得当前动画播放到了第⼏帧~~
如果你指的是模型动画的话是没办法取到具体的帧数的因为那个动画是连续的曲线动画。只能知道现在在第⼏帧和第⼏帧之间。
通过nbalexis的⽅法计算:alizedTime 的值始终都是从0到1的,然后你⽤这个值乘以你动画的总帧数然后取整就可以得出你当前在哪两个帧之间。(int)变量进⾏取整。
2. 3D引擎不同于2D,它的帧只是⼀个概念,30帧/s只是说曲线的关键点最⼩间隔,在播放的时候引擎通过时间来取曲线上对应的插值,因为每个update对于每台性能不同的电脑来说是不稳定的,update更不会去适应动画帧频,可以说⼤多数画⾯帧都不会对应到每个关键帧上(⽐如就算是导⼊1秒10帧的动画,仍然能在引擎中以每秒120帧的速度播放并且每帧都有相对运动)。所以你只能换算帧所在的时间点,通过记录动画的播放时间来判断激活事件。另外动画⾯板时间线下⽅右击也有事件激发器,但是不常⽤。
normalizedTime就是动画时间的百分⽐,你可以⽤这个来控制动画的播放。
JavaScript⇒ public var normalizedTime: float;
C#⇒ public float normalizedTime;
Description 描述
The normalized time of the animation.
动画的归⼀化时间。
A value of 1 is the end of the animation. A value of 0.5 is the middle of the animation.
值为1是动画的结尾。值为0.5是动画的中间。
JavaScript:
no example for javascript;
C#:
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour
{
public Animation anim;
void Start()
{
// Fast forward to the middle of the animation
anim["Walk"].normalizedTime= 0.5f;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论