Swift:将SKshapeNode定位到最左边/右边但不是屏幕外

时间:2016-08-25 16:45:02

标签: ios swift sprite-kit sknode

我试图将两个SKshapeNode放置在屏幕的最左侧和最右侧,而不会像http://i.stack.imgur.com/9rhAH.png那样将节点的任何部分放在屏幕外。我不希望根据另一个节点定位一个节点。 我一直在尝试使用minX和maxX并使用屏幕宽度和SKshapeNodes,我无法弄明白。

这是我到目前为止所拥有的

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {

        let firstShapeNode = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 50, height: 50))
        firstShapeNode.position = CGPoint(x: 0, y: self.frame.height / 2)
        firstShapeNode.fillColor = SKColor.purpleColor()
        self.addChild(firstShapeNode)

        let secondShapeNode = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 50, height: 50))
        secondShapeNode.position = CGPoint(x: 0, y: self.frame.height / 2)
        secondShapeNode.fillColor = SKColor.cyanColor()
        self.addChild(secondShapeNode)

}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

要分别将节点对齐到屏幕的左侧和右侧,请尝试以下操作:

firstShapeNode.position = CGPoint(x: firstShapeNode.size.width / 2, y: self.frame.height / 2)
secondShapeNode.position = CGPoint(x: self.frame.maxX - secondShapeNode.size.width / 2, y: self.frame.height / 2)

在SpriteKit中,与UIKit不同,屏幕上的默认原点(0,0)位于左下角。此外,默认情况下,position的{​​{1}}是节点的中心,这就是为什么它们需要偏移其宽度的一半。