1. 程式人生 > >cocos2d-x 切換骨骼動畫時殘影問題

cocos2d-x 切換骨骼動畫時殘影問題

最近在做的一個專案,NPC的動畫是用Spine來做的。遊戲中隨著不同的狀態變化,會導致NPC在“待機”、“準備進攻”、“進攻“、”眩暈“、”死亡“等等多種狀態之間來回切換,NPC每切換一種狀態,隨之就要立刻播放該狀態對應的動畫。

遊戲中播放spine動畫是用SkeletonAnimation物件呼叫setAnimation方法,我遇到的問題是,在多種動畫這樣切換播放時,有的動畫被切換後仍有殘影存留,直到再一次播放該動畫時殘影才消失,但該動畫播放完後,殘影又會存留。

經過多番搜尋查詢,終於找到解決方法了:只需在SkeletonAnimation物件每次呼叫setAnimation方法之前都呼叫下setToSetupPose

()方法,即可完美解決這個問題。我的方法如下:

[cpp] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. void GameHero::playAction(constchar* actionName, bool loop) {  
  2.     m_animNode->setToSetupPose();  // m_animNode為SkeletonAnimation物件
  3.     m_animNode->setAnimation(0, actionName, loop);  
  4. }  

這樣每次播放只需呼叫playAction方法即可,傳入動畫名,以及是否迴圈播放的引數。