gpt4 book ai didi

ios - SpriteKit 中设备的基本定位

转载 作者:可可西里 更新时间:2023-11-01 01:02:29 24 4
gpt4 key购买 nike

我对 SpriteKit 非常陌生,一直在关注网上某人提供的一些很棒的教程。他们都做了一件事,我认为可能是一个危险信号,但想问问社区。

先决条件:他的所有演示都是使用 iPad 完成的(它在应用程序设置中设置为仅针对 iPad,因此无意使用 iPhone)。

所以我看到的是开发人员使用硬编码点创建标签和图形。

例如让文本“game over”出现:

            let gameOver = SKSpriteNode(imageNamed: "gameOver")
gameOver.position = CGPoint(x: 512, y: 384)
gameOver.zPosition = 1
addChild(gameOver)

所以关于这段代码的事情是它被硬编码到一个特定的点。所以这意味着理论上,在 iPad mini 和 iPad pro 上会有点错误,对吗(因为他打算在 iPad air 上使用)?或者设备每次都翻译应该在哪里?

我觉得你想要做一些花哨的魔术,比如计算屏幕的宽度/高度并除以某个数字来计算中心,而不是指定点。

事实上,他的所有代码都或多或少地使用了硬编码点,例如看这个来渲染 Sprite :

        for i in 0 ..< 5 { drawSpriteAt(CGPoint(x: 100 + (i * 170), y: 410)) }
for i in 0 ..< 4 { drawSpriteAt(CGPoint(x: 180 + (i * 170), y: 320)) }
for i in 0 ..< 5 { drawSpriteAt(CGPoint(x: 100 + (i * 170), y: 230)) }

如果我同时针对 iPad mini 和 iPad pro,这不是一个主要问题吗?

然而,出于某种原因,我在 iPad pro 的模拟器上运行了它,它实际上看起来还不错。

所以我的问题最终是:

这样做就好了吗?不同的 iPad 是否以某种方式神奇地计算出点 (512、384) 是什么,以至于该点在 iPad mini 和 iPad pro 上有所不同?

谢谢,如果这是一个基本问题,我深表歉意,我只是想看看,如果我只编写一个针对 iPhone 或 iPad 的应用程序(我实际上同时在做),我会制作两个单独的应用程序特定于一个设备的编码坐标。

例如,我会说“在所有 iPad 上,无论如何,使用点 (512,384)”,而在 iPhone 上,我会说“在所有尺寸的所有 iPhone 上,使用点 (300, 150) 或类似的东西。

非常感谢您的帮助!

最佳答案

Sprite Kit 设计有一个缩放系统,因此您不必太担心坐标。这些坐标不代表屏幕上的像素或点坐标——而是游戏场景中的坐标。基本上,如果您为游戏设置缩放模式,您的坐标将针对多种屏幕尺寸进行处理。(如果您只是在谈论 iOS 按钮/ View 坐标,那么您的假设是正确的。)

请参阅此处的文档:https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Nodes/Nodes.html

After a scene is rendered, its contents are copied into the presenting view. If the view and the scene are the same size, then the content can be directly copied into the view. If the two differ, then the scene is scaled to fit in the view. The scaleMode property determines how the content is scaled.

When you design your game, you should decide on a strategy for handling the scene’s size and scaleMode properties. Here are the most common strategies:

  • Instantiate the scene with a constant size and never change it.
  • Pick a scaling mode that lets the view scale the scene’s content. This gives the scene a predictable coordinate system and frame. You can then base your art assets and gameplay logic on this coordinate system.
  • Adjust the size of the scene in your game. Where necessary, adjust your game logic and art assets to match the scene’s size.
  • Set the scaleMode property to SKSceneScaleModeResizeFill. SpriteKit automatically resizes the scene so that it always matches the view’s size. Where necessary, adjust your game logic and art assets to match the scene’s size.

关于ios - SpriteKit 中设备的基本定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34242768/

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