Cocos2d iphone 使用CCLayerPanZoom和CCRenderTexture时,CCSprite子坐标变换失败?

Cocos2d iphone 使用CCLayerPanZoom和CCRenderTexture时,CCSprite子坐标变换失败?,cocos2d-iphone,kobold2d,Cocos2d Iphone,Kobold2d,谢谢你的阅读 我正在cocos2d1.x中进行设置,在场景中有一个巨大的CCLayerPanZoom,可以自由平移和缩放。 每一帧,我都必须在顶部额外绘制一个CCRenderTexture来创建“黑暗”(我正在切断光线)。这很有效 现在,我已经向曲面添加了单个精灵,它们由Box2D管理。这也行得通。我可以转换到渲染器中光源应该在的位置,它们渲染得很好 然后我想在顶部添加一个HUD层,通过在场景中添加一个CCD层。该层需要包含几个堆叠在彼此顶部的精灵,作为用户界面元素 只是,所有这些元素都无法画出

谢谢你的阅读

我正在cocos2d1.x中进行设置,在场景中有一个巨大的CCLayerPanZoom,可以自由平移和缩放。 每一帧,我都必须在顶部额外绘制一个CCRenderTexture来创建“黑暗”(我正在切断光线)。这很有效

现在,我已经向曲面添加了单个精灵,它们由Box2D管理。这也行得通。我可以转换到渲染器中光源应该在的位置,它们渲染得很好

然后我想在顶部添加一个HUD层,通过在场景中添加一个CCD层。该层需要包含几个堆叠在彼此顶部的精灵,作为用户界面元素

只是,所有这些元素都无法画出我需要它们的位置:正好在屏幕中央。添加到HUD层的精灵都关闭了,我已经迭代了几乎所有的变体“convertToWorldSpace”、“convertToNodeSpace”等等

就好像背景中CCPanZoomLayer的不断缩放会在每个帧上方的层中抛出锚点,重置它们也没有帮助。它们似乎都默认位于它们所附着的节点边界框的一个角,就像它们的变换在图形中被阻止或设置为零一样


有人遇到过这个问题吗?使用CCLayerPanZoom并在每个帧的顶部绘制自定义CCRenderTexture时,这是一个已知问题吗?

Ha!我找到了罪犯!Cocos2D使用Zwoptex数据的方式有一个错误。(我正在使用cocos2dv1.0.1)

在Zwoptex v3数据中加载时,在计算实际精灵帧定位点时,似乎忽略了精灵帧的修剪偏移数据。其效果是,在定义中具有修剪偏移的精灵上(例如在plist中)没有正确设置其锚定点。真奇怪。。。我想知道其他人是否也有过这种想法?这是一个突出的问题

以下是如何复制: 以zwoptex v3格式(使用修剪数据的格式)为精灵帧创建任何数据。确保您确实有一个修剪过的精灵,即偏移量必须大于零,图像大小必须大于源。 加载精灵,并尝试将其定位在屏幕中心。你会看到它的关闭。以下是如何正确计算锚定点:

        CCSprite *floor = [CCSprite spriteWithSpriteFrameName:@"Menu_OmeFloor.png"]; //create a sprite
        CCSpriteFrame *frame=[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"Menu_OmeFloor.png"]; //get its frame to access frame data
        [floor setTextureRectInPixels:frame.rect rotated:frame.rotated untrimmedSize:frame.originalSizeInPixels]; //re-set its texture rect
        //Ensure that the coordinates are right: Texture frame offset is not counted in when determining normal anchor point:
        xa = 0.5 + (frame.offsetInPixels.x / frame.originalSizeInPixels.width);
        ya = 0.5 + (frame.offsetInPixels.y / frame.originalSizeInPixels.height);
        [floor setAnchorPoint:ccp(xa,ya)];
        floor.position=(where you need it);

用所需的定位点值替换xa/ya公式中的0.5。

hm我已经使用Cocos 1.x和Zwoptex很长一段时间了,我从未遇到过这个问题。嗨,安德鲁,你在使用SpriteBatchNodes并通过CCLayerPanZoom进行缩放吗??正如我所描述的,我也不会在简单的项目中出现这种情况,但这已经不再简单了。