为什么我的节点在每台设备上的位置都不同?

时间:2017-06-30 23:37:05

标签: swift sprite-kit sprite cgpoint

好的,所以我一直试图在我的iPhone 6s +和我的iPad 2上放置一条线。这条线被添加到SKCamera中(我不知道是否会影响它)。以下是该行的代码:

    var leftWall = SKSpriteNode()
    leftWall.size = CGSize(width: 1, height: 10000)
    leftWall.position = CGPoint(x: 0, y: 0)
    leftWall.color = UIColor.red
    leftWall.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: leftWall.size.width, height: leftWall.size.height))
    leftWall.physicsBody?.affectedByGravity = false
    leftWall.physicsBody?.isDynamic = false
    leftWall.physicsBody?.categoryBitMask = groundGroup
    leftWall.physicsBody?.collisionBitMask = ballGroup
    leftWall.physicsBody?.contactTestBitMask = 0
    theCamera.addChild(leftWall)

好的,所以x位置是0,0对吗?以下是我在iPhone 6s +上的外观:iPhone 6s+ 如你所见,线在中间?

以下是我在iPad 2上的外观:

iPad 2

我只是不明白为什么线的位置完全不同..请帮助我!

1 个答案:

答案 0 :(得分:2)

您没有考虑iPad上发生的裁剪,或者您的scaleMode错误

您需要做的是将所有节点锚点(包括场景)设置为(0.5,0.5),确保您的GameScene具有静态大小而不是基于view.frame(750,1334是一个很好的)并且您的缩放模式设置为.aspectFill。这使得(0,0)成为屏幕的中心,你会注意到所有设备上的所有内容