繁体   English   中英

使用SpriteKit的GameScene中的0,0在哪里?

[英]Where is 0,0 in a GameScene using SpriteKit?

我在将子画面定位到游戏场景中的正确点时遇到问题。 就我阅读的位置, 锚点spritekit编程指南而言 ,应该清楚0,0位于左下角。 我仅使用横向模式。

但是当我使用我的代码时:

import SpriteKit

class GameScene: SKScene {

    override func didMoveToView(view: SKView) {
        var ground = createGround()
        self.addChild(ground)        
    }

    func createGround()->SKSpriteNode {
        var ground = SKSpriteNode(imageNamed: "ground.png")
        ground.name = "ground"
        ground.anchorPoint = CGPointMake(0, 0)
        ground.position = CGPointMake(0, 0)

        return ground
    }
}

我实现了相当标准的场景:

override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)
    }
}

结果如下:

iPhone Simulator的屏幕截图

我的“ ground.png”尺寸为120x120。 我仔细检查了场景锚点,它位于(0,0),即使我在didMoveToView中将其设置为(0,0),我仍然遇到同样的问题。

不知何故Y因子搞砸了。 当我将地面位置设置为(0,156)时,它直接位于波顿的左上角。 所以看起来游戏场景的y锚点是-36,地面的锚点在左上角而不是左下角。 有什么线索吗?

我发现几乎相同的问题,但框架看起来不错(0.0,0.0,1024.0,768.0)。

Sprite锚点(.5,.5)表示放置时将通过其中心定位。 因此,如果将其放置在屏幕的左下角,则只会看到图像的上半部分和右半部分。

如果您希望图像能完美地适合左下角,而无需其他数学运算,请将其锚点设置为:

sprite.anchorPoint = CGPointMake(0, 1)

这应该有所帮助。

func createGround()->SKSpriteNode {
    var ground = SKSpriteNode(imageNamed: "ground.png")
    ground.name = "ground"
//  ground.anchorPoint = CGPointMake(0, 0) leave this at .5,.5
    ground.position = CGPointMake(ground.size.width/2, ground.size.height/2)

    return ground
}

并更改场景比例。

scene.scaleMode = .AspectFit

如果您的场景是1024 x 768并设置为AspectFill,则某些场景将被截断,这会使事情复杂化。 为了获得最佳效果,请将场景大小设置为适合iPhone的大小,但从短期来看,Aspect fit将在屏幕上显示整个场景。 无论哪种方式,您都将被截断,或者出现黑条,直到将场景大小更改为736 x 414(iPhone 6+)为止。

由于默认情况下地面的原点位于中心,场景的原点位于左下角,因此您需要将位置移动到地面的宽度和高度的一半。

希望这会有所帮助并且有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM