У меня есть несколько спрайтов, где персонаж игрока направлен вправо. Я могу создать анимацию из этих спрайтов просто отлично. Проблема в том, если я хочу, чтобы спрайты были повернуты влево.
Я делаю следующее:
Sprite* p = Sprite::createWithSpriteFrameName("Jumping");
p->setPosition(Vec2(_visibleSize.width/2,_visibleSize.height/2));
this->addChild(p);
p->setFlippedX(true);
Vector<AnimationFrame*> animFrames;
float frameRate = 0.32f;
std::vector<std::string> frameNames = {"Running 0","Running 1","Running 2"};
for (int i =0; i<3;i++){
auto frameName = frameNames.at(i);
auto spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName);
ValueMap userInfo;
userInfo["frame_index"] = Value(i);
auto animFrame = AnimationFrame::create(spriteFrame, frameRate, userInfo);
animFrames.pushBack(animFrame);
}
auto animation = Animation::create(animFrames, frameRate);
auto animationAction = Animate::create(animation);
p->runAction(RepeatForever::create(animationAction));
p->setFlippedX(true);
Анимация запускается, но анимация по-прежнему показывает игрока, направленного вправо. В чем проблема? Почему setFlippedX
не работает в этом случае?
Я использую Cocos2d-x 3.13.1. Я не могу найти ошибку, поэтому я предполагаю, что я делаю что-то неправильно.