Ios Cocos2d图像掩蔽

Ios Cocos2d图像掩蔽,ios,cocos2d-iphone,mask,masking,Ios,Cocos2d Iphone,Mask,Masking,我目前正在制作一个游戏,游戏中的主角坐在一艘船上,当一个敌人与船平行时,它会掉一根管子。我的主要问题是管子比船大,所以当它下降或上升时,从后面可以看到它。请注意,管子顶部的图像(船)是透明图像。谢谢 您可以在Cocos2d中剪裁绘制区域,无需花费太多精力。如果将此代码添加到三维布管对象,则可以定义适当的区域来绘制对象。此矩形以外的任何对象都不会被绘制 -(void) visit { if(!self.visible) return; glEnable(GL_SCISSOR_TEST);

我目前正在制作一个游戏,游戏中的主角坐在一艘船上,当一个敌人与船平行时,它会掉一根管子。我的主要问题是管子比船大,所以当它下降或上升时,从后面可以看到它。请注意,管子顶部的图像(船)是透明图像。谢谢

您可以在Cocos2d中剪裁绘制区域,无需花费太多精力。如果将此代码添加到三维布管对象,则可以定义适当的区域来绘制对象。此矩形以外的任何对象都不会被绘制

-(void) visit
{
if(!self.visible)
    return;

glEnable(GL_SCISSOR_TEST);

CGRect thisClipRegion = _clipRegion;
thisClipRegion = CC_RECT_POINTS_TO_PIXELS(thisClipRegion);

glScissor(thisClipRegion.origin.x, thisClipRegion.origin.y, thisClipRegion.size.width, thisClipRegion.size.height);

[super visit];

glDisable(GL_SCISSOR_TEST);
}

您可以在Cocos2d中剪裁绘制区域,而无需花费太多精力。如果将此代码添加到三维布管对象,则可以定义适当的区域来绘制对象。此矩形以外的任何对象都不会被绘制

-(void) visit
{
if(!self.visible)
    return;

glEnable(GL_SCISSOR_TEST);

CGRect thisClipRegion = _clipRegion;
thisClipRegion = CC_RECT_POINTS_TO_PIXELS(thisClipRegion);

glScissor(thisClipRegion.origin.x, thisClipRegion.origin.y, thisClipRegion.size.width, thisClipRegion.size.height);

[super visit];

glDisable(GL_SCISSOR_TEST);
}

我认为你必须管理两个管图像,一个是大的,另一个是小的,这是适合你的船。 当您放下此管时,必须更改管图像。 要更改管图像,请使用以下代码

CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:@"blast.png"];
            [player setTexture: tex];
这里的玩家是精灵

CCSprite *player;

我认为你必须管理两个管图像,一个是大的,另一个是小的,这是适合你的船。 当您放下此管时,必须更改管图像。 要更改管图像,请使用以下代码

CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:@"blast.png"];
            [player setTexture: tex];
这里的玩家是精灵

CCSprite *player;

另一种可能的解决方案是使用可变纹理。另一个可能的解决方案是使用可变纹理。看到我的答案了吗