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.

Другие вопросы по тегам