我一直在玩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上测试过,问题仍然存在 –