C++ - 如何反向播放动画 Cocos2DX

C++ - How to play animation in opposite direction Cocos2DX

我得到了这样的 png

我也得到了这段代码

SpriteFrameCache::getInstance()->addSpriteFramesWithFile("walk.plist", "walk.png");
Vector<SpriteFrame*> animFrames;
animFrames.reserve(8);
char spriteFrameByName[MAX_WORD] = { 0 };

for (int index = 1; index <= 8; index++)
{

    sprintf(spriteFrameByName, "%d.png", index);

    auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(spriteFrameByName);

    animFrames.pushBack(frame);
}
Animation* animation = Animation::createWithSpriteFrames(animFrames, time);
sprite->runAction(Animate::create(animation));

现在我想水平翻转这个动画。看起来像这样

不是要创建另一个 png 文件,有没有办法在 C++ 代码中做到这一点?

水平翻转图像等于缩放该图像的 x 轴减 1。我不熟悉 Cocos2DX,但是将图像的 x 比例乘以 -1 将为您水平翻转。

这个 answer 可能会帮助您缩放:

动画* animation = Animation::createWithSpriteFrames(animFrames, time);

sprite->runAction(Animate::create(animation));

sprite->setFlipX(true)

我不完全确定翻转函数是否处理您要翻转的对象的旋转。我相信它只会改变纹理的方向。如果您需要计算您的角色在您的游戏世界中面对的方向,这最终可能会使事情变得更加复杂。

您可以在 Y 轴上旋转整个精灵。通过这样做,它将确保所有东西都朝向正确的方向,而不仅仅是纹理。以下代码通过旋转整个精灵提供相同的视觉效果。

sprite->setRotation3D(Vec3(0, 180, 0));