【问题标题】:Why is my SpriteKitNode position not being displayed properly?为什么我的 SpriteKitNode 位置没有正确显示?
【发布时间】:2016-12-26 10:46:40
【问题描述】:

我是 SpriteKit 的新手,我正在学习一个教程,该教程将 SpritekitNode 定位在纵向模式下屏幕底部附近的中心,但无论我使用什么代码,我的对象都不会采用中讨论的位置教程。我查看了其他几个教程,它们在定位 SpriteKitNode 的代码方面几乎相同。

这是我在 GameScene.swift 中唯一的代码:

import SpriteKit
import GameplayKit

class GameScene: SKScene {

    var player:SKSpriteNode!

    override func didMove(to view: SKView) {

        player = SKSpriteNode(imageNamed: "Spaceship")
        player.xScale = 0.5
        player.yScale = 0.5

        player.position = CGPoint(x: self.frame.size.width / 2, y: player.size.height / 2 + 20)

        self.addChild(player)
    }

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

我还没有在 GameScene.sks 中添加任何内容或对 info.plist 进行任何更改,但使用上面的代码,mySpriteKitNode 显示在屏幕的右侧中心,如下图所示。飞船应该定位在红色 X 附近。

我查看了几篇关于在 SpriteKit 中定位问题的帖子,但没有找到解决方案。

如果有人能解释一下我到底做错了什么?谢谢

【问题讨论】:

    标签: sprite-kit position swift3


    【解决方案1】:

    发生这种情况是因为您所遵循的教程可能已过时。早些时候,当从 sks 文件加载场景时,它会将 anchorPoint 设置为 0,0。现在,默认设置为 0.5, 0.5。

    因此,您可以使用当前代码,但将场景的锚点设置为 0.0、0.0,或者保留场景的 anchorPoint 并相应地设置玩家的 position 属性:

    //player.position.x should be 0 which is middle of the screen
    player.position.y = -frame.size.height / 2.0 + player.size.height/2.0 + 20.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多