Я использую набор спрайтов в Swift и настраиваю текстуры с помощью функции SKTexture(rect:inTexture:)
. Я не использую встроенные атласы текстур, вместо этого я создаю родительскую текстуру (атлас текстур) с помощью SKTexture(imageNamed:)
. Это потому, что у меня уже есть атласы и положения подтекстур (в пикселях) в моих файлах данных, а не отдельные изображения.
Таким образом, .size()
объекта SKTexture
является правильным, когда изображение @2x (размер составляет половину размера пикселя). Я вычисляю координаты подпрямоугольника (которые находятся в координатах единицы, 0-1) путем деления на размер, но мне нужно знать исходный масштаб изображения, чтобы я мог разделить на него размеры в пикселях.
Вот мой код, который хорошо работает:
// Create the texture as a sub-rect of the parent texture
if let parentTexture = textures[parentTextureId] {
let size = parentTexture.size()
var subRect = CGRectFromString(subRectString)
subRect = CGRectMake(
(subRect.origin.x / 2) / size.width,
(size.height - ((subRect.origin.y / 2) + (subRect.size.height / 2))) / size.height,
(subRect.size.width / 2) / size.width,
(subRect.size.height / 2) / size.height)
let texture = SKTexture(rect: subRect, inTexture: parentTexture)
textures[textureId] = texture
}
Проблема в том, что мне пришлось жестко запрограммировать все эти / 2
настройки масштаба. Как я могу получить исходный масштаб изображения (или фактические размеры в пикселях) текстуры, чтобы я мог правильно вычислить суб-прямоугольник без жесткого кодирования?