Orge Intermediat Tutorial 1

Edit on Github

问题

在实现 Orge Intermediat Tutorial 1 附加的 Difficult Questions 时,发现启动 die animation state后

// set Die animation
 mAnimationState = mEntity->getAnimationState("Die");
 mAnimationState->setLoop(false);
 mAnimationState->setEnabled(true);
// Set walking animation
 mAnimationState = mEntity->getAnimationState("Walk");
 mAnimationState->setLoop(true);
 mAnimationState->setEnabled(true);

再恢复为”Walk“ animation state后,robot虽然是在”Walk“但依然就倾斜的。

发现

跟踪程序发现mNode(Robot attatched)的mOrientation在Y轴上并没有变化,猜想应该是在mEntity(Robot)中改变的,但Debug中并没有发现变化。继续Debug,发现从 Walk state到 Die state再到 Walk state后, Die state的状态依然是启动的,而不会因为启动了”Walk state而停止。这可能就是问题所在吧。

解决

再切换到 Walk state之前,关闭 Die state。

// Set walking animation
 mAnimationState->setEnabled(false);
 mAnimationState = mEntity->getAnimationState("Walk");
 mAnimationState->setLoop(true);
 mAnimationState->setEnabled(true);

PS: 居然问题解决了,但如果是前后连续的启动这两个state, Die state并不会影响到 Walk state。这个问题以后有空再到源码中找吧。