cocos2d-x 切換骨骼動畫時殘影問題
阿新 • • 發佈:2019-02-01
最近在做的一個專案,NPC的動畫是用Spine來做的。遊戲中隨著不同的狀態變化,會導致NPC在“待機”、“準備進攻”、“進攻“、”眩暈“、”死亡“等等多種狀態之間來回切換,NPC每切換一種狀態,隨之就要立刻播放該狀態對應的動畫。
遊戲中播放spine動畫是用SkeletonAnimation物件呼叫setAnimation方法,我遇到的問題是,在多種動畫這樣切換播放時,有的動畫被切換後仍有殘影存留,直到再一次播放該動畫時殘影才消失,但該動畫播放完後,殘影又會存留。
經過多番搜尋查詢,終於找到解決方法了:只需在SkeletonAnimation物件每次呼叫setAnimation方法之前都呼叫下setToSetupPose
- void GameHero::playAction(constchar* actionName, bool loop) {
- m_animNode->setToSetupPose(); // m_animNode為SkeletonAnimation物件
- m_animNode->setAnimation(0, actionName, loop);
- }
這樣每次播放只需呼叫playAction方法即可,傳入動畫名,以及是否迴圈播放的引數。