SKTexture в: текстура дает пустой результат
Я пытался разрезать лист спрайта, и по какой-то причине за пределами меня результат всегда был пустым.
Можно подумать, что ниже даст вам половину левой нижней части изображения.
let allTex = SKTexture(imageNamed: "zelda")
let standTex = SKTexture(rect: CGRect(x: 0, y:0, width: 1/2, height: 1/2), in: allTex)
Это однако дает пустые результаты.
1 ответ
Решение
Проблема заключалась в том, что 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)
Это вынуждает результаты вычислений быть двойными 0,5, а затем в конечном итоге использовать CGRect с точным плавающим числом вместо округленного int.