首页 > 解决方案 > 为什么skscene的布局在所有设备中都不相同

问题描述

**嗨,我想做一个砖头射击游戏,我开始做靠近屏幕边缘的边框线,我实现了代码(如下),它应该在所有设备上都一样,但是当我尝试它时iPhone 8 一切正常,当我在 iPad 或 iPhonex 上尝试时,它看起来不一样,就像它出于某种原因放大了一样

甚至标准的hello world标签都是一样的

你能帮我么

谢谢**

    func crwalls(){
    //        for i in 1...3 {
    let spce = self.frame.width/12
    let wall = SKSpriteNode(imageNamed: "liiine")
    wall.size = CGSize(width: 20, height: self.frame.height/1.5)
    wall.position = CGPoint(x: frame.minX + 30, y: frame.midY + (self.size.width/4) )
    wall.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: ((wall.size.width)), height: ((wall.size.height))))
    //floor.physicsBody?.categoryBitMask = floorbit
    wall.physicsBody?.isDynamic = false
    print("mmm")
    self.addChild(wall)

    let wall3 = SKSpriteNode(imageNamed: "liiine")
    wall3.size = CGSize(width: 20, height: self.frame.height/1.5)
    wall3.position = CGPoint(x: frame.maxX - 30, y: frame.midY + (self.size.width/4) )
    wall3.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: ((wall3.size.width)), height: ((wall3.size.height))))
    //floor.physicsBody?.categoryBitMask = floorbit
    wall3.physicsBody?.isDynamic = false
    print("mmm")
    self.addChild(wall3)
    let wall4 = SKSpriteNode(imageNamed: "liiine")
    wall4.size = CGSize(width: self.frame.width - 40, height: 20)
    wall4.position = CGPoint(x: self.frame.midX, y:       self.frame.maxY - spce)
    wall4.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: ((wall4.size.width)), height: ((wall4.size.height))))
    //floor.physicsBody?.categoryBitMask = floorbit
    wall4.physicsBody?.isDynamic = false
    print("mmm")
    self.addChild(wall4)

}
‘’’

标签: sprite-kit

解决方案


对“为什么 skscene 的布局在所有设备中都不相同”的简单回答。

因为那是不可能的。这就像在问为什么服装店不能只卖 1 码的衣服。

屏幕有各种形状和大小,因此由您决定它对用户的显示方式。

最简单的解决方案是使用方形场景构建游戏。这将涵盖高和宽的所有方面口粮。

当然,这对于实际游戏玩法可能并不理想,因为您最终可能会在侧面丢失比您想要的更多的场景。

另一种解决方案是使您的 SKView 成为场景的倒数并在您的视图上使用 .aspectFill 。这将使您的双方将在更广泛的设备上显示更多信息,但您的高设备将收到您希望他们看到的信息量。


推荐阅读