ios - SpriteKit世界定位错误

标签 ios swift sprite-kit sknode

我正在尝试使用 SpriteKit 和 Swift 制作我的第一个游戏。我想我理解了 World SKNode 的概念,但我无法让它正常工作。

我将 world:SKNode 添加为 GameScene 的子项。然后我添加 9 个子 SKSpriteNode(从 200px X 200px 点开始 400px X 400px,因为 spritesNode 居中)。它们位置完美,但我不知道如何获得我的世界 SKNode 的边界。

例如,如何显示我的世界的左下角?

import SpriteKit

class GameScene: SKScene {
    let cityPartSide:Int = 400
    let startCoord:Int = 200

    var world:SKNode = SKNode()

    override func didMoveToView(view: SKView) {

        //self.world = SKNode()
        self.world.name = "world"
        self.addChild(self.world)
        let map:[[UInt8]] = [[16, 16, 16],
                             [16, 16, 16],
                             [16, 16, 16]]
        drawMap(world, map: map)

    }
    func drawMap(world:SKNode, map:[[UInt8]]) {
        let lineSize:Int = map[0].count
        var lineCounter = map.count
        while lineCounter > 0 {
            lineCounter -= 1
            var elemCounter = 0
            while elemCounter < lineSize {
                var sprite:SKSpriteNode = SKSpriteNode()
                let currentPartNumb = map[lineCounter][elemCounter]
                if currentPartNumb == 0 {
                    elemCounter += 1
                    continue
                } else {
                    sprite = SKSpriteNode(imageNamed: "cell")
                }
                //CHOOSE IMAGE
                sprite.position = CGPoint(x: startCoord + elemCounter * cityPartSide, y: startCoord + ((lineSize-1)-lineCounter)*cityPartSide)
                world.addChild(sprite)
                elemCounter += 1
            }
        }
    }
    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
    }
}

但是我通过运行这段代码得到的是,它在垂直方向上的位置完美,但世界的左侧位于屏幕之外的某个地方。

enter image description here

最佳答案

哦,这很简单。我需要添加这个

scene.size = self.view.frame.size

在 GameViewController.swift 的 viewDidLoad 中像这样

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let scene = GameScene(fileNamed:"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
            scene.size = self.view.frame.size    //<---HERE
            skView.presentScene(scene)
        }
    }

    //...etc.

关于ios - SpriteKit世界定位错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36475904/

相关文章:

swift - tableview 继续返回选中的第一个单元格 [swift]

swift - 如何计算显示的 Sprite 数量?

swift - 节点联系时收到错误

ios - 呈现新的 viewController 后保持键盘打开

ios - 设置 slider 值以在 AVPlayer 中设置 SeekToTime

swift - Else on If Else 语句不会被触发,不明白为什么

swift - 使用 Swift 在 SpriteKit 中计算增量

ios - 将免费应用程序和付费应用程序上传到Apple AppStore

Javascript - 根据设备更改按钮图像

swift - 从对象的属性中检索除一个值之外的随机值