我一直在玩SpriteKit,因爲我想在一年內創建一個遊戲,但我最近以奇怪的形式抓住了一些速度顛簸。iOS SpriteKit座標原點問題
所以這是問題。
我創建了一個普通的SpriteKit項目,並且更改了一些默認代碼。 我添加了一個大小爲20,20(square)的SKNode到位置0,0或CGPointZero。
事情是,我顯示的分辨率是1024x768,如果我在橫向上運行我的應用程序,我無法在0,0點看到我的廣場,我只能看到它,如果我將Y位置設置爲100,
myNode.position = CGPoint(x: 0, y: 100)
,如果我跑我在縱向模式下的應用程序,Y軸如果固定的,0將在左下角,但我不能再次看到廣場上,除非我把我的X位置到300像
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)")
}
}
你期望你的節點在哪裏?默認情況下,場景的原點位於左下角。這與UIKit的區別在於左上角的原點。但是,場景的尺寸很可能比您正在測試的設備大。 – beyowulf
我期望在左下角看到它。無論我使用哪種設備,如何將場景尺寸設置爲屏幕大小?我已經在iPhone 6,iPhone 6 Plus e上測試過,問題仍然存在 –