2016-10-23 6 views
0

私はスプライトシートをカットしようとしていましたが、何らかの理由で結果が空でした。SKTexture in:空の結果を返します

以下は、画像の左下半分の半分を与えると考えられます。

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

これは空の結果です。

答えて

1

問題は、CGRectが間違った初期化子を使用していたことでした。 1つは、あなたが画像の左下の四半分の半分を与えると思うでしょう。

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

しかし、これは結果は1/2が、これは代わりに、これを行う修正するには0であることのいくつかの不幸な丸め続いint型でなければなりませんと言っによる型推論に空の結果を与える:

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) 

これにより計算結果は0.5倍になり、最終的には丸めintの代わりに正確な浮動小数点数を持つCGRectが使用されます。

+0

これはCGRectの問題ではありませんが、これは1と2が何であるかを指定しないため、コンパイラはIntが最も速い型であるため小数点がないときにIntをとることになります – Knight0fDragon

+0

@ Knight0fDragon確かに私は何が起こっているのか理解しています。ちょうど私が壁に向かって私の頭を叩いたので、他の誰かに同じものを救うことを望んでいた。 1つは多くの場所でこれにぶつかることができましたが、この特定の出来事では、静かな失敗と画面上の何もないために実現するのは少し難しかったです。 – GOR

+1

私はあなたが持っているエラーがなぜ得られたのかを明確にしていました。 – Knight0fDragon

関連する問題