SKCropNode 掩蔽边缘抗锯齿 [英] SKCropNode masking edge anti-aliasing

查看:24
本文介绍了SKCropNode 掩蔽边缘抗锯齿的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个圆形遮罩,并使用精灵套件 SKCropNode 类为遮罩内的精灵设置动画.但是蒙版的边缘看起来像素化了.

I created a circular mask and animate a sprite inside the mask by using sprite kit SKCropNode class. But the edge of the mask looks pixellated.

有没有办法使用抗锯齿来平滑边缘?

Is there a way to use anti-aliasing to smooth the edges?

推荐答案

如果你想用抗锯齿效果屏蔽任何 SKNode/SKSpriteNode - 你可以使用 SKEffectNode 代替 SKCropNode.它也适用于动画节点.这是一个例子:

If you want to mask any SKNode/SKSpriteNode with an anti-aliasing effect - you can use SKEffectNode instead of SKCropNode. It works with animated nodes as well. Here is an example:

// Set up your node
SKNode *nodeToMask = [SKNode node];
// ...

// Set up the mask node
SKEffectNode *maskNode = [SKEffectNode node];

// Create a filter
CIImage *maskImage = [[CIImage alloc] initWithCGImage:[UIImage imageNamed:@"your_mask_image"].CGImage];
CIFilter *maskFilter = [CIFilter filterWithName:@"CISourceInCompositing"
                                  keysAndValues:@"inputBackgroundImage", maskImage, nil];
// Set the filter
maskNode.filter = maskFilter;

// Add childs
[maskNode addChild:nodeToMask];
[scene addChild:maskNode];

这篇关于SKCropNode 掩蔽边缘抗锯齿的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆