gpt4 book ai didi

ios - GameScene 尺寸比我的设备屏幕尺寸宽

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:00:20 26 4
gpt4 key购买 nike

我正在使用 swift 和 SpriteKit,我遇到了一个问题,我认为我的 GameScene 比我设备的屏幕尺寸宽。我需要做的是移动图像,然后不允许它移过屏幕边缘。

我现在所处的位置是我的图像将与屏幕的顶部和底部发生碰撞,但它会向左或向右移动并与屏幕外某处的边缘发生碰撞。

我在搜索中遇到了这个问题,试图解决这个问题: Screen's real size is bigger than what I see

只是做他们尝试的事情并注释掉 scene.scaleMode = .AspectFill 这行将导致与屏幕边缘的碰撞正常工作,但是就像他们说的那样,图像现在没有正确缩放,在我的例子中只占据了中间,每边都留下灰色边缘。

他们的其他补救措施是在取出默认创建的场景后添加 scene = GameScene(size: self.view.frame.size),我假设 GameViewController.swift 但我不确定要删除什么才能尝试这样做。

我的 viewDidLoad 目前看起来像这样:

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)

}

}

如果有人可以帮助我指明要删除的内容或尝试其他可能解决此问题的正确方向,我将不胜感激。

提前致谢!

最佳答案

尝试使用 viewWillLayoutSubviews 而不是 viewDidLoad 并使用 skView.bounds.size 初始化场景:

override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()

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

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

/* Set the scale mode to scale to fit the window */

if(skView.scene == nil){

scene.scaleMode = .AspectFill
scene.size = skView.bounds.size
skView.presentScene(scene)
}


}
}

viewDidLoad 中,可能还不知道 View 的最终大小,而 viewWillLayoutSubviews 有时是初始化场景的更好位置。

当从 .sks 文件加载场景时,它的默认大小为 1024x768。这就是为什么您的场景有时比预期的更宽,这可以像我发布的代码一样进行更改。

如果您对 View 的大小有误(但我对此表示怀疑),请检查您的启动图像...如果选择错误,则 View 的大小可能有误。

关于ios - GameScene 尺寸比我的设备屏幕尺寸宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31779142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com