【问题标题】:Issue with positioning SKSpriteNode in SKScene在 SKScene 中定位 SKSpriteNode 的问题
【发布时间】:2014-11-25 20:30:47
【问题描述】:

这是我第一个使用 SpriteKit 的项目,我正在关注 THIS 教程 但是,当我尝试像他在 20:10 的教程中那样使用以下代码为图像提供位置时:

playScene.swift

import SpriteKit

class playScene : SKScene {

let runningBar = SKSpriteNode(imageNamed: "bar")

override func didMoveToView(view: SKView) {
    println("We are at the new scene!")
    self.backgroundColor = UIColor(hex: 0x80D9FF, alpha: 1)
    self.runningBar.anchorPoint = CGPointMake(0.5, 0.5)
    self.runningBar.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) - (self.runningBar.size.height / 2))
    self.addChild(self.runningBar)

}
override func update(currentTime: NSTimeInterval) {

    }
}

我想在屏幕底部给出位置,但我得到了这个输出:

但输出应该是:

GameScene.swift(如果需要)

import SpriteKit

class GameScene: SKScene {

let playButton = SKSpriteNode(imageNamed: "play")

override func didMoveToView(view: SKView) {

    self.playButton.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
    self.addChild(self.playButton)
    self.backgroundColor = UIColor(hex: 0x80D9FF, alpha: 1)

}

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

    for touch: AnyObject in touches{
        let location = touch.locationInNode(self)
        if self.nodeAtPoint(location) == self.playButton{
            var scene = playScene(size: size.self)
            let skView = self.view as SKView!
            skView.ignoresSiblingOrder = true
            scene.scaleMode = .ResizeFill
            scene.size = skView.bounds.size
            skView.presentScene(scene)
        }

    }

}

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
    }
}

谁能告诉我怎样才能做到这一点?

提前致谢。

【问题讨论】:

  • 贴出创建栏的相关代码

标签: swift sprite-kit


【解决方案1】:

您需要正确查看教程。您错误地设置了以下几行:

self.runningBar.anchorPoint = CGPointMake(0.5, 0.5)
self.runningBar.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) - (self.runningBar.size.height / 2))

他们应该是:

self.runningBar.anchorPoint = CGPointMake(0, 0.5)
self.runningBar.position = CGPointMake(CGRectGetMinX(self.frame), CGRectGetMinY(self.frame) + (self.runningBar.size.height / 2))

为了更好地理解坐标系,请查看documentation

【讨论】:

  • anchorPoint = CGPointZeroposition = CGPointZero 怎么样?
  • Dharmesh,你也可以按照@0x141E 评论的方式实现它
猜你喜欢
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多