ios - 非视网膜 SKSpriteNode 纹理像素化

标签 ios objective-c sprite-kit

我正在创建一个圆形 Sprite 节点并在非视网膜版本中进行像素化。我没有在代码中的任何地方更改 Sprite 节点的大小。我正在 Photoshop 中创建非视网膜版本,方法是转到 File>Save For Web>Changing 大小为 50%。每个球都是 50x50 PNG。

下面是我如何实例化每个球。

Ball *ball = [Ball spriteNodeWithImageNamed:@"ball"];

Ball 是 SKSpriteNode 的子类。下面的图像是在模拟器中以 100% 比例拍摄的。非视网膜图像在模拟器和物理设备中被像素化。我怎样才能让这个 Assets 看起来更干净?

视网膜(“ball@2x.png”): retina

非视网膜(“ball.png”)nonretina

最佳答案

这可能无法准确回答原始问题,因为引用的图像是 50x50,但对于高宽比不是 1:1 的图像,首先获取实际图像的尺寸并设置纹理。

你可以在 Swift 中这样做:

let image = imageAsset
let texture = SKTexture(image: image)
let factor = 0.5
let size = CGSize(width: image.size.width * factor, height: image.size.height * factor)
let node = SKSpriteNode(texture: texture, size: size)

如果你想将图像大小调整 50%,将使用上面的方法。如果你想要全尺寸图像,你只需使用 image.size 作为 SKSpriteNode 的大小参数,而不需要 factor 变量.

关于ios - 非视网膜 SKSpriteNode 纹理像素化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22182498/

相关文章:

ios - 在设备上运行时不出现 SKEmitterNode

objective-c - 将毫秒转换为分钟

ios - 有什么方法可以通过 iOS 7 中的代码关闭电话铃声(使 iPhone 静音)?

iphone - Apple Mach-O 链接器错误 (2)

iphone - iOS 5 中字典/定义词的 View Controller

iPhone SDK-UIImageView : position of image

objective-c - 在IDA Pro中,第二个ARM操作数中的 '::lower16::'是什么意思?

swift - 在 SKScene 中定位 SKSpriteNode 的问题

swift - 在 SpriteKit 中向场景添加模糊会导致图像大小出现问题

ios - 快速组合枚举