【问题标题】:SKSpriteNode has wrong positioning on x and y axisSKSpriteNode 在 x 和 y 轴上的定位错误
【发布时间】:2018-02-25 13:31:50
【问题描述】:

我已经声明了一个SKSpriteNode,带有一个支柱图像。图片是 3000 x 50,我已经这样声明了:

var pairs = SKNode()

let pillar = SKSpriteNode(imageNamed: "pillar")
pillar.setScale(0.5)
pillar.physicsBody = SKPhysicsBody(rectangleOf: pillar.size)
pillar.physicsBody?.isDynamic = false
pillar.physicsBody?.affectedByGravity = false
pillar.zPosition = 1

pairs.zPosition = 1
pairs.addChild(pillar)

当我设置柱子的位置时,我会这样做:

bottomWall.position = CGPoint(x: Int(self.frame.width) + 100, y: 0)

我已将 y 设置为 0,但支柱图像大约从 y 轴上的屏幕中间开始,对于 x 轴,Int(self.frame.width) + 100 将支柱定位在距中间 100 像素的位置。

所以我的问题是:

为什么会出现这种行为以及如何使y: 0 开始于y: 0x: 0 开始于x: 0

【问题讨论】:

    标签: swift sprite-kit skspritenode


    【解决方案1】:

    默认情况下,您的 SKScene 的锚点为 0.5、0.5。这表明对象的默认位置在场景的中心。

    如果您希望对象从左下角开始放置,您需要将场景锚点设置为零。在func didMove(to view: SKView) 中设置这个

    self.anchorPoint = CGPoint(x: 0, y: 0)
    

    self.anchorPoint = CGPoint.zero
    

    【讨论】:

      【解决方案2】:

      对象的position 与对象的中心有关。 为了让xy 代表bottomWall 的左下角,您应该设置

      bottomWall.anchorPoint = CGPoint(x:0,y:0)

      在您定位bottomWall的行之前

      这将使用对象的左下角作为xy 相对于屏幕。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 2014-05-06
        相关资源
        最近更新 更多