Cocos2D - удалить непрозрачность слоя в регионе

У меня есть сцена со слоем с верхним z-индексом, который добавляет темный эффект ко всей сцене, устанавливая ее непрозрачность. Сейчас я пытаюсь удалить эффект тени/темноты в конкретной области (внутри конуса/треугольника), как показано на изображении (внутри красного многоугольника). Другими словами, я хочу иметь такую ​​же «яркость» (нулевую непрозрачность) внутри треугольника, как и в левой части экрана.

введите здесь описание изображения

код:

-(id) init
{
if( (self=[super initWithColor:ccc4(0,0,0,128)] )) {
    CGSize winSize = [[CCDirector sharedDirector] winSize];

    CCLayerColor* layer1 = [CCLayerColor layerWithColor: ccc4(0, 0, 0, 180) width: winSize.width height: winSize.height];
    layer1.position = ccp(50,0);
    [self addChild: layer1 z:2];

    CCSprite *background = [CCSprite spriteWithFile:@"background.png"];
    background.position = ccp(background.contentSize.width/2, background.contentSize.height/2);
    [self addChild:background];

    CCSprite *player = [CCSprite spriteWithFile:@"Player.png"rect:CGRectMake(0, 0, 27, 40)];
    player.position = ccp(player.contentSize.width/2, winSize.height/2);
    [self addChild:player];     
}
return self;
}

любая идея о том, как это сделать ?? может быть, я должен попытаться сделать это по-другому и не использовать CCLayer для добавления темного эффекта ??

заранее спасибо


person Albert Prats    schedule 18.09.2012    source источник


Ответы (1)


Самый простой способ — использовать CCSprite с черным изображением размером с фон. Затем вырежьте все, что вам нужно, в программе для изображений и нарисуйте этот спрайт поверх фона с пониженной непрозрачностью.

person LearnCocos2D    schedule 19.09.2012
comment
идея состоит в том, чтобы имитировать свет лампы, поэтому разрезающий треугольник будет создан с кодом и координацией для размещения эффекта на сцене, поэтому, насколько я понимаю, ваша идея состоит в том, чтобы создать спрайт со статической областью разреза. Может быть, с каким-то рендером это было бы возможно ?? - person Albert Prats; 19.09.2012