Sprite Kit:SKNode zRotation + 抗锯齿

6

我创建了一个SKSpriteNode,只设置了背景颜色和大小,然后对其进行旋转:

SKSpriteNode *myNode = [SKSpriteNode spriteNodeWithColor:[SKColor grayColor] size:CGSizeMake(100, 100)];

myNode.zRotation = 0.2 * M_PI;

我该如何为我的SKSpriteNode启用反锯齿?目前,灰色正方形的边缘看起来很粗糙。
我已经发现的内容:当我创建一个灰色的100x100px PNG并使用spriteNodeWithImageNamed:时,边缘也看起来很粗糙。如果我在灰色正方形PNG周围添加一个1像素的透明边框,则边缘看起来更加平滑。 (因为锯齿状的边缘现在是透明的。)
非常感谢你的帮助!

你可以在SKTexture上设置纹理过滤 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKTexture_Ref/Reference/Reference.html#//apple_ref/c/tdef/SKTextureFilteringMode。 不确定你的节点是否有纹理,因为它是通过颜色和大小生成的,但值得一试。 - Dobroćudni Tapir
谢谢,但是没有SKTexture是不起作用的。(而且“SKTextureFilteringLinear”应该是默认值。) - user867635
@Sebastian 你找到解决方案了吗? - bobmoff
1
@bobmoff:不,很遗憾,你无法解决这个问题。如果你使用TexturePacker来制作精灵表,有一个选项叫做“内部填充”,可以在图像周围添加透明像素。它说:“当旋转修剪或裁剪的精灵时,它会显著减少多边形边缘的走样。例如,如果你的精灵沿着自己的边界有许多像素,那么在旋转时绘制得更加平滑。” - user867635
@Sebastian,好的,谢谢你的解释。 - bobmoff
1个回答

0

我知道这个问题很老了,但我有一个简单的解决方案。也许是你的图像不好缩放。具有大曲面的矢量图形在调整大小时会遇到挑战。

我的做法是: 1)如果您导入矢量文件,请确保将其转换为PNG格式,使用非常大的DPI(360)和尺寸; 2)使用Gimp打开PNG; 3)应用高斯模糊因子11(或更大)。

现在,将您的图像用作纹理。如果仍然有锯齿,则将usesMipmaps设置为true。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接