微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpriteKit边框不适合实际的iOS屏幕尺寸

如何解决SpriteKit边框不适合实际的iOS屏幕尺寸

我已经习惯了精灵套件,并试图在设备框架周围制作一个简单的物理边框,以使精灵反弹。

但是,当运行我的iPhone XR应用程序时,其物理边框远低于设备的实际边框。我知道这一点,因为当球反弹到实际设备的框架下方并最终反弹时,意味着边框也位于下方。

这是我的代码

import SpriteKit
import GameplayKit

class GameScene: SKScene,SKPhysicsContactDelegate {
    
    var player:SKSpriteNode!
    
    var scoreLabel:SKLabelNode!
    var score:Int = 0 {
        didSet{
            scoreLabel.text = "score: \(score)"
        }
    }
    
    override func didMove(to view: SKView) {
        
        self.backgroundColor = UIColor.systemOrange
        
        
        
        player = SKSpriteNode(imageNamed: "ball")
        
        player.position = CGPoint(x: 100,y: player.size.height / 2)
        
        player.physicsBody = SKPhysicsBody(circleOfRadius: 20)
        
        player.physicsBody!.affectedByGravity = true
        
        self.addChild(player)
        
        self.physicsWorld.gravity = CGVector(dx: 0,dy: -9.8)
        self.physicsWorld.contactDelegate = self
        
        scoreLabel = SKLabelNode(text: "score: 0")
        scoreLabel.position = CGPoint(x: 100,y: 100)
        scoreLabel.fontName = "AmericanTypeWriter-Bold"
        scoreLabel.fontSize = 36
        scoreLabel.fontColor = UIColor.black
        score = 0
        
        self.addChild(scoreLabel)
        
        let border = SKPhysicsBody(edgeLoopFrom: self.frame)
         //create variable representing the frame or border of the gamescene
        
         border.friction = 0 //we don't want friction to the borders
        border.restitution = 1 //we want bouncyness to the borders
        
         self.physicsBody = border
    }
    
    
    
    
    
    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
    }
}

解决方法

只需修复它即可。

在GameViewController.swift中添加以下代码行

    scene.size = view.bounds.size

这将使用默认代码

   scene.scaleMode = .aspectFill

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。