屏幕的实际尺寸比我所看到的要大
我正在学习Swift和SpriteKit。 我在Xcode 6中创build了新的SpriteKit&Swift游戏项目,我编辑了GameScene.swift
文件。 我没有触及其他文件。 问题:当球弹跳时,它受到上下方向的限制,但是当它向左或向右时,它不受限制并且熄灭,但是似乎左右极限在那里,但是它们不在屏幕边缘因为球会在一会之后回来。 这是我的GameScene.swift
:
import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { self.backgroundColor = SKColor.whiteColor() self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame) self.physicsWorld.gravity = CGVectorMake(0, 0) let ball = SKSpriteNode(imageNamed: "ball") ball.position = CGPointMake(self.size.width/2, self.size.height/2) ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.frame.size.width/2) self.addChild(ball) var myVector = CGVectorMake(20, 20) ball.physicsBody.applyImpulse(myVector) } override func update(currentTime: CFTimeInterval) { /* Called before each frame is rendered */ } }
我试图找出问题,我发现如果我在默认的scene.scaleMode = .AspectFill
注释行42或scene.scaleMode = .AspectFill
然后边缘工作正确,但似乎屏幕缩放。
我认为我们有一个真实的方形框架,侧面大小等于iOS模拟器中的纵向iPhone的高度。 我怎样才能改变框架大小设置屏幕边缘作为我的边缘?
如上所述,设置大小也为我工作。 我将其设置在GameViewController的viewDidLoad()函数中,紧跟在设置的行后面
/* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFill
通过设置:
scene.size = self.view.frame.size
我删除了默认情况下创build的场景,并添加线scene = GameScene(size: self.view.frame.size)
,它的工作! 感谢@Literphor