我一直在玩SpriteKit,因为我想在一年内制作一款游戏,但最近我以一种奇怪的形式发现了一些速度障碍。
所以这就是问题所在。
我创建了一个常规的SpriteKit项目,并且我更改了一些默认代码。 我在位置0,0或CGPointZero中添加了一个大小为20,20(平方)的SKNode。
问题是,我显示的分辨率是1024x768,如果我在横向上运行我的应用程序,我无法在0,0点看到我的方块,我只能看到它,如果我将Y位置设置为100,就像< / p>
myNode.position = CGPoint(x: 0, y: 100)
如果我在纵向模式下运行我的应用程序,Y轴如果固定,0将在左上角,但我再也看不到方形,除非我将X位置设置为300像< / p>
myNode.position = CGPoint(x: 300, y: 0)
为什么我不能简单地看到0,0位置上的节点,无论我面对哪个屏幕方向。
这是我的全班
import SpriteKit
class GameScene: SKScene {
let myNode = SKSpriteNode()
override func didMoveToView(view: SKView) {
myNode.size = CGSize(width: 20, height: 20)
myNode.position = CGPoint(x: 0, y: 0)
myNode.color = UIColor.blackColor()
myNode.anchorPoint = CGPointZero
myNode.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: 20.0, height: 20.0))
myNode.physicsBody?.affectedByGravity = false
myNode.physicsBody?.categoryBitMask = 1
myNode.physicsBody?.collisionBitMask = 0
myNode.zPosition = 1
addChild(myNode)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let moveToY = touch.locationInNode(self).y
myNode.runAction(SKAction.moveToY(moveToY, duration: 5))
}
}
override func update(currentTime: CFTimeInterval) {
//print("Position Y: \(self.myNode.position.y)")
}
}
答案 0 :(得分:2)
您可以在视图控制器中的viewWillLayoutSubviews()
中创建和设置场景大小。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let skView = self.view as! SKView
let scene = YourGameScene(size: self.view.bounds.size)
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
希望这有帮助。
修改:不要在viewDidLoad()
中设置场景大小,因为如果手机更改了方向,视图大小将不正确。在viewWillLayoutSubviews()
中设置场景大小可确保根据手机的方向正确调整视图大小。