编写脚本以使用按键触发非常快速的动画(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);
}