我有一个想要根据x值播放的动画,它实际上是一个物体的位置。
在x上映射动画键,从-2到+6开始。因为x变为-2动画将处于初始状态,因为其值变为增加动画应该进一步运行,因为x达到+6动画应该完成。在这些值之间,用户在任何时候减少x值,那么动画应该是反向的。我认为它实际上是钳制过程,我想将x值映射到动画的关键帧中。
下面只是一个运行动画的简单代码:
void Update () {
if (isPositionChanging)
{
if(transform.position.x > xPos){
if(incrementOrDecrement <=12) {
incrementOrDecrement ++;
AnimationPlayOnPositionValue(1, incrementOrDecrement);
}
}
else {
if (incrementOrDecrement >= 0)
{
incrementOrDecrement--;
AnimationPlayOnPositionValue(1, incrementOrDecrement);
}
}
}
}
void AnimationPlayOnPositionValue(float speed,float timeToUpdate) {
animatedObject["MachineAnimationComplete"].speed = speed;
animatedObject["MachineAnimationComplete"].time = timeToUpdate;
animatedObject.Play();
}
答案 0 :(得分:0)
不确定我是否得到了你正在努力实现的目标,但我会试一试:
xPos = transform.position.x;
的末尾忘记了Update()
行:为了比较下一帧,我保存最新的X位置就像这些值一样? (代码剥离错误我猜:P)AnimationClip.SampleAnimation()
方法。看起来像是:
void Update()
{
float normalizedTime = Mathf.Clamp((transform.position.x - (-2.0f)) / (6.0f - (-2.0f)), 0.0f, 1.0f);
float animationTime = normalizedTime * animatedObject["MachineAnimationComplete"].length;
animatedObject.GetClip("MachineAnimationComplete").SampleAnimation(animatedObject.gameObject, animationTime);`
}
希望这有帮助,