我有一个这样的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 ++代码中有没有办法解决这个问题?
答案 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));