C ++ - 如何在相反方向Cocos2DX上播放动画

时间:2016-07-12 17:03:42

标签: c++ animation cocos2d-x sprite cocos2d-x-3.0

我有一个这样的png

enter image description here

我也有这段代码

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));

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

enter image description here

不创建另一个png文件,在C ++代码中有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:1)

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

answer可能会帮助您进行缩放:

答案 1 :(得分:1)

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

sprite-&GT; runAction(动画::创建(动画));

sprite-&gt; setFlipX(true)

答案 2 :(得分:0)

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

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

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