下面是我如何实现一个动态解,它只是一点x射线(我认为它实际上更接近图像的逆)。我无法预处理图像,因为我必须从游戏层的当前状态创建奇怪的图像。
这都是使用Cocos2d完成的:
-
我为我的场景创建了两层。一层是游戏的主层,另一层是效果层。主游戏层是CCLayer的子类。效果层是cccolorrayer的子类。
-
效果层的z阶高于主游戏层,即效果层高于游戏层。
-
然后我使用了两种不同的混合模式,将外观从普通模式更改为x光模式。
代码let
@implementation EffectLayer
- (id) init
{
self = [super init];
if (self != nil)
{
self.isTouchEnabled = YES;
self.color = ccc3(255, 255, 255);
self.opacity = 0.8;
[self goNormal];
}
return self;
}
- (void) goWeird
{
[self setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_COLOR, GL_ZERO}];
}
- (void) goNormal
{
[self setBlendFunc:(ccBlendFunc){CC_BLEND_SRC, CC_BLEND_DST}];
}