动画组件随机粘贴在框架上

时间:2015-10-27 18:36:05

标签: c# animation unity3d gameobject

编写脚本以使用按键触发非常快速的动画(24帧)。我希望它感觉像是一个缓慢反冲的脚踏板。我计划用数百个游戏对象自动化这个过程,所以我使用了动画组件,而不是Animator。

基本逻辑是1.动画应以默认速度播放,当它到达终点时,以负半速返回。 2.如果动画在倒退时再次触发,它应该继续前进,如步骤1所示。

问题在于动画在大约20%的时间内卡在最后一帧上。控制台将其粘贴的帧打印为0,但它显示最后一帧。它有时也只是在没有向后动画的情况下跳到0。 我错过了一些愚蠢的东西吗?

public GameObject go;
private Animation anim;
private AnimationClip clip;
private float animationLength;
private float limit;
private float originalSpeed = 3;
private string name;


void Start(){
    anim = go.GetComponent<Animation>();
    anim.wrapMode = WrapMode.Once;
    anim.playAutomatically = false;
    clip = anim.clip;
    clip.legacy = true;
    name = anim.clip.name;
    animationLength = anim[name].length;
    anim[name].speed = 0;
    anim.Play(name);
}

void Update(){
    if(Input.GetKeyDown("1")){
        trigger();
    }
    animate();
}

void animate(){
    limit = animationLength - (animationLength/24f);
    if(anim[name].time >= limit){
        anim[name].time = limit;
        anim[name].speed = -(originalSpeed/2);
    }
}

void trigger(){
    anim[name].speed = originalSpeed;
    anim.Play(name);
}

0 个答案:

没有答案