Не изменять размер сцены в зависимости от iPhone модели, оставьте Sprite-кит сделать этот вид работы:
scene.scaleMode = SKSceneScaleMode.ResizeFill
Сцена не масштабируется в соответствии с видом. Вместо этого, сцена будет автоматически изменена, так что ее размеры всегда совпадают с размерами .
О размере, когда сцена сначала инициализируется, его свойство size настроено назначенным инициализатором. Размер сцены определяет размер видимой части сцены в точках. Это используется только для указания видимой части сцены.
Update, чтобы помочь вам в позиционировании:
Если вы хотите установить свои позиции вместо того, чтобы использовать ScaleMode вы можете установить ваш scene.scaleMode
в .AspectFill для этого, чтобы работать на всех сценах и размер сцены должен быть 2048x1536 или 1536x2048. Это сделает его масштабируемым и для iPad.
class StartScene: SKScene {
let playableArea: CGRect!
}
override init(size: CGSize) {
//1. Get the aspect ratio of the device
let deviceWidth = UIScreen.mainScreen().bounds.width
let deviceHeight = UIScreen.mainScreen().bounds.height
let maxAspectRatio: CGFloat = deviceWidth/deviceHeight
//2. For landscape orientation, use this
let playableHeight = size.width/maxAspectRatio
let playableMargin = (size.height - playableHeight)/2.0
playableArea = CGRect(x: 0, y: playableMargin, width: size.width, height: playableHeight)
//3. For portrait orientation, use this
let playableWidth = size.height/maxAspectRatio
let playableMargin = (size.width - playableWidth)/2.0
playableArea = CGRect(x: playableMargin, y: 0, width: playableWidth, height: size.height)
super.init(size: size)
}
Таким образом, вы можете позиционировать свой объект с:
ball.position = CGPoint(x: CGRectGetMidX(playableArea), y: CGRectGetMaxY(playableArea) - (ball.size.height * 0.90))
Этот код работает в iPhone 4S, 5, 5S, 6, 6 Plus, 6S, 6S Plus и IPADS.
Если вы хотите, чтобы ваши границы (для отладки или нет):
func drawWorkArea() {
let shape = SKShapeNode()
let path = CGPathCreateMutable()
CGPathAddRect(path, nil, workArea)
shape.path = path
shape.strokeColor = SKColor.redColor()
shape.lineWidth = 8
addChild(shape)
}
Вы должны объяснить модель вашей игры, вы планируете иметь больше сцен увидеть больше игровой площадки, или сделать вы ожидаете, что изображения станут больше на более крупных устройствах. – Knight0fDragon
@ Knight0fDragon изображения должны увеличиваться на больших устройствах. –