Cocos2d x 为什么不是';调用setFlipped(true)时动画是否水平翻转?

Cocos2d x 为什么不是';调用setFlipped(true)时动画是否水平翻转?,cocos2d-x,cocos2d-x-3.0,cocos2d-x-3.x,Cocos2d X,Cocos2d X 3.0,Cocos2d X 3.x,我有一些精灵,玩家角色朝向右边。 我可以创建一个动画从这些精灵刚刚好。问题是,如果我想让精灵朝向左边 我做了以下工作: Sprite*p=Sprite::CreateWithPriteFrameName(“跳跃”); p->设置位置(Vec2(_visibleSize.width/2,_visibleSize.height/2)); 这个->addChild(p); p->setFlippedX(真); 矢量动画帧; 浮动帧率=0.32f; std::vector frameNames={“正在

我有一些精灵,玩家角色朝向右边。 我可以创建一个动画从这些精灵刚刚好。问题是,如果我想让精灵朝向左边

我做了以下工作:

Sprite*p=Sprite::CreateWithPriteFrameName(“跳跃”);
p->设置位置(Vec2(_visibleSize.width/2,_visibleSize.height/2));
这个->addChild(p);
p->setFlippedX(真);
矢量动画帧;
浮动帧率=0.32f;
std::vector frameNames={“正在运行0”、“正在运行1”、“正在运行2”};
for(int i=0;igetSpriteFrameByName(frameName);
ValueMap用户信息;
userInfo[“frame_index”]=值(i);
自动animFrame=AnimationFrame::create(spriteFrame、帧速率、用户信息);
animFrames.pushBack(animFrame);
}
自动动画=动画::创建(动画帧,帧速率);
自动动画动作=动画::创建(动画);
p->runAction(RepeatForever::create(animationAction));
p->setFlippedX(真);
动画运行,但动画仍显示播放器朝向右侧。问题出在哪里?在这种情况下,
setFlippedX
为什么不起作用?


我使用的是Cocos2d-x 3.13.1。我找不到任何bug,所以我假设我做了一些错误的事情。

这是因为您在代码中调用了两次

p->setFlippedX(true);

这似乎是一个bug,除了使用两个精灵集之外,似乎没有办法解决它——一个用于所有未翻转的精灵,另一个用于精灵翻转时

更糟糕的是,这意味着如果你想要翻转,你不能使用动画代码,而是需要实现你自己的逻辑,使用合适的精灵、动画等


编辑:似乎在3.16中已修复,我称之为“真”,所以它应该不会有任何区别。你可以尝试添加其他变换,如缩放或旋转。只是为了查看图像是否可以播放。你也可以尝试在其他平台上运行,只是为了看它是否存在错误。旋转比和缩放比按预期工作。同样,如果我不设置动画,setFlipped也可以对图像工作。我想问题是:如果你有cocos2d-xv3.13.1,你运行上面的代码,你能运行一个精灵水平翻转的动画吗?如果能,我能看看你和我的项目有什么不同吗?还有,setFlippedY工作吗?调用setFlippedX和setFlippedY后的值是多少?对不起,我的机器上没有v3.13。