SKSpriteNode在x和y轴上的定位错误

时间:2018-02-25 13:31:50

标签: swift sprite-kit skspritenode

我宣布了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将柱子100px从中间定位。

所以我的问题是:

为什么行为以及我如何才能使y: 0y: 0开始x: 0x: 0开始?

2 个答案:

答案 0 :(得分:0)

默认情况下,您的SKScene的anchorPoint为0.5,0.5。这就是对象的默认位置在场景的中心。

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

中设置此项
self.anchorPoint = CGPoint(x: 0, y: 0)

self.anchorPoint = CGPoint.zero

enter image description here

答案 1 :(得分:0)

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

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

在您定位bottomWall

的行之前

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