更改SKScene中心点

时间:2017-04-04 21:43:56

标签: swift sprite-kit

我正在使用一个简单的2D游戏,我正在尝试从1级(场景1)切换到2级(场景2)。为了测试,两个级别包含相同的内容。这是我的过渡代码:

    let transition = SKTransition.push(with: SKTransitionDirection.left, duration: 1)
    let nextScene = Scene(size: levelBuilder.scene.size)
    nextScene.scaleMode = .aspectFill
    nextScene.backgroundColor = UIColor(red:0.17, green:0.24, blue:0.31, alpha:1.0)
    levelBuilder.scene.view?.presentScene(nextScene, transition: transition)

    nextScene.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
    nextScene.physicsWorld.contactDelegate = levelBuilder.scene.physicsWorld.contactDelegate

    loadLevelContents(level: 2, world: 1, borderPercentage: 30)

这很有效,但问题不在于过渡,而是将节点加载到场景二中,这是在这里发生的:

loadLevelContents(level: 2, world: 1, borderPercentage: 30)

定位很好,但问题是所有内容都是根据屏幕中间的中心点或相对(0,0)来确定的。

场景2的中心点位于左下角

http://vulkan.gpuinfo.org/listreports.php

虽然我需要它像场景1,它位于屏幕中间: enter image description here

如何在所有SKScenes的屏幕中间更改此相对点或中心点,不确定它的名称

1 个答案:

答案 0 :(得分:3)

您正在寻找的点称为anchorPoint。在Spritekit中,左下角是0,0,右上角是1,1。所以要把它放在中心,你必须在didMove函数中设置和0.50.5的achorPoint

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

对于SKScenes,默认值为(0,0),但它不仅仅是具有anchorPoints的SKScenes,SKSpriteNodes也是如此。

enter image description here