SKTexture in:texture 产生空结果

SKTexture in:texture yields empty result

我试图剪切一个精灵 sheet 但由于某些超出我的原因,结果总是空的。

有人会认为下图会给您图像左下四分之一的一半。

let allTex = SKTexture(imageNamed: "zelda")
let standTex = SKTexture(rect: CGRect(x: 0, y:0, width: 1/2, height: 1/2), in: allTex)

然而,这给出了空结果。

问题是 CGRect 使用了错误的初始值设定项。有人会认为下面的内容会给你图像左下四分之一的一半。

let allTex = SKTexture(imageNamed: "zelda")
let standTex = SKTexture(rect: CGRect(x: 0, y:0, width: 1/2, height: 1/2), in: allTex)

然而,由于类型推断表明结果应该是一个 int 后跟一些不幸的 1/2 舍入为 0,因此给出了空结果。要解决此问题,请改为执行以下操作:

let allTex = SKTexture(imageNamed: "zelda")
let standTex = SKTexture(rect: CGRect(x: 0, y:0, width: 1.0/2.0, height: 1.0/2.0), in: allTex)

这会强制计算结果为 double 0.5,然后最终使用具有精确浮点数而不是舍入整数的 CGRect。