Я работаю над простым игровым приложением и застрял в действительно странной проблеме масштабирования.Я расширил SKSpriteNode, чтобы создать класс, который представляет собой препятствие в моем игровом мире.У этого препятствия все изображения @ 1x, @ 2x и @ 3x установлены в файле Assets.xcassets
Моя проблема в том, что независимо от того, какую загрузочную SKTexture я загружаю и передаю в super.init, получается ровно 50%размера моего фактического изображения.Так что, как будто он использует значения @ n-1x, хотя это не так (подтверждается удалением изображений @ 1x и @ 3x для теста).
Код:
import SpriteKit
class Obstacle: SKSpriteNode {
init(imageNamed: String, type: UInt32, xPos: CGFloat = 0, yPos: CGFloat = 800) {
let texture = SKTexture(imageNamed: imageNamed);
super.init(texture: texture, color: SKColor.clear, size: texture.size();
}
}
Я тестирую на устройстве @ 2x и после прочтения документации SKTexture.size () вижу, что он возвращает значения размера в точках, а не в пикселях, поэтому я создал этот обходной путь:
import SpriteKit
class Obstacle: SKSpriteNode {
let scale = UIScreen.main.scale
init(imageNamed: String, type: UInt32, xPos: CGFloat = 0, yPos: CGFloat = 800) {
let texture = SKTexture(imageNamed: imageNamed);
super.init(texture: texture, color: SKColor.clear, size: CGSize(width: texture.size().width * scale, height: texture.size().height * scale);
}
}
Этот обходной путь решенмоя проблема, но я не могу поверить, что нет никаких функциональных возможностей, чтобы избежать этого.Все остальные мои графические ресурсы, такие как фон, кнопки, модель плеера и т. Д., Работают нормально с точки зрения размера, однако все их изображения устанавливаются с помощью редактора сцены .sks, а не программно.
Я не делаюиметь где-либо еще код, который каким-либо образом изменяет масштаб или размер объектов препятствий.
Также обратите внимание, что я опустил нерелевантный код, который устанавливает координаты x и y, физику и т. д.
IЯ новичок в разработке для iOS, и любая помощь в этом вопросе очень ценится!