0

我有一个条件 if then 语句运行,如果满足某个条件,我希望动画改变。出于某种原因,当它开始时,会播放正确的动画,但是当它改变时,动画不会改变。代码正在运行LateUpdate()。我做了一个hack来测试动画的变化,它也不起作用。

我读过的所有内容都说要使用SetAnimation,它会覆盖以前的动画,但这似乎不起作用。这是破解我想要的结果的代码。

rightCrowdMemberAnimation.state.SetAnimation (0, "idle_07", true);

if (Input.GetKeyDown (KeyCode.A)) {

rightCrowdMemberAnimation.state.SetAnimation (0, "yay_07", true);

}

谢谢您的帮助。

奇怪的是,在检查器中它说动画已经改变,但在视觉上它没有改变。

注意:这是我想要完成的。看来,LateUpdate当我单击 A 时,它正在重置为空闲状态。我仍然不确定为什么它不会改变下面的动画。我认为 A 按钮技巧在执行上是相似的,但我想我错了。

void Start(){
    Assume I did a random roll of color {red,blue,yellow}
}

真正的问题是

void LateUpdate(){
     if (color = red) {
         rightCrowdMemberAnimation.state.SetAnimation (0, "idle_07", true);
     } else if (color = blue) {
         rightCrowdMemberAnimation.state.SetAnimation (0, "idle_08", true);
     } else if (color = yellow){
         rightCrowdMemberAnimation.state.SetAnimation (0, "idle_09", true);
     }
}

在检查器中,我想显示的动画就在那里。只是我正在调用的动画没有出现。

4

1 回答 1

3

基本上你必须改变脚本的属性AnimationNameSkeletonAnimation这是示例:

private SkeletonAnimation skeletonAnimation;

void Awake()
{
    skeletonAnimation = GetComponent<SkeletonAnimation>();
}

void LateUpdate(){
     if (color = red) {
         skeletonAnimation.AnimationName = "idle_07";
     } else if (color = blue) {
         skeletonAnimation.AnimationName = "idle_08";
     } else if (color = yellow){
         skeletonAnimation.AnimationName = "idle_09";
     }
}
于 2016-02-01T10:42:46.147 回答