cocos2d-x:移动时旋转CCSprite会更改它';s的最终位置

cocos2d-x:移动时旋转CCSprite会更改它';s的最终位置,cocos2d-x,ccsprite,ccrotateby,Cocos2d X,Ccsprite,Ccrotateby,我正试图为我的游戏制作一个动画,一只蚂蚁离开它的巢穴。它应该沿着鸟巢向下向右移动,面朝下,然后再看直 我创建了两个动作序列,一个用于移动,另一个用于旋转,并将它们放在一个CCSpawn中。如果我只执行移动动作,效果会很好,但是当动作一起执行时,最后精灵会移回原来的位置 我不知道发生了什么事。你们能帮忙吗 CCLayer * gameLayer = CCLayer::create(); Ant* ant = Ant::create(); // Ant is a CCSprite CCPoint

我正试图为我的游戏制作一个动画,一只蚂蚁离开它的巢穴。它应该沿着鸟巢向下向右移动,面朝下,然后再看直

我创建了两个动作序列,一个用于移动,另一个用于旋转,并将它们放在一个CCSpawn中。如果我只执行移动动作,效果会很好,但是当动作一起执行时,最后精灵会移回原来的位置

我不知道发生了什么事。你们能帮忙吗

CCLayer * gameLayer = CCLayer::create();

Ant* ant = Ant::create(); // Ant is a CCSprite

CCPoint nestp = ccp(45, 172);

ant->setPosition(nestp);

gameLayer->addChild(ant);

addChild(gameLayer);

    // ant walking animation
CCAnimate * antWalk = CCAnimate::create(_antWalk);
ant->runAction(CCRepeatForever::create(antWalk));   

CCPoint p1 = ccp(55, 165), p2 = ccp(75,160), p3 = ccp(90,110), p4 = ccp(105, 50);   

CCSequence *moveOut = (CCSequence *)CCSequence::create(CCMoveTo::create(0.3, p1), CCMoveTo::create(0.3, p2), CCMoveTo::create(0.7, p3), CCMoveTo::create(0.7, p4), NULL);

CCSequence *rotateOut = (CCSequence *) CCSequence::create(CCRotateTo::create(0.5, 50), CCDelayTime::create(1), CCRotateTo::create(0.5, 0));

CCSpawn *leaveNest = (CCSpawn *)CCSpawn::create(moveOut, rotateOut, NULL);

ant->runAction(leaveNest);

当回顾我自己的问题时,我意识到我忘记了在旋转序列的末尾添加NULL。应该是这样的:

CCSequence *rotateOut = (CCSequence *) CCSequence::create(CCRotateTo::create(0.5, 50), CCDelayTime::create(1), CCRotateTo::create(0.5, 0), NULL);

我不希望出现这种行为,因为没有错误,这就是为什么我花了这么长时间才发现,但现在它工作正常!我希望它能帮助有同样问题的人。

回顾我自己的问题时,我意识到我忘记了在旋转序列的末尾添加NULL。应该是这样的:

CCSequence *rotateOut = (CCSequence *) CCSequence::create(CCRotateTo::create(0.5, 50), CCDelayTime::create(1), CCRotateTo::create(0.5, 0), NULL);
我不希望出现这种行为,因为没有错误,这就是为什么我花了这么长时间才发现,但现在它工作正常!我希望它能帮助有同样问题的人