Swift 如何缩放/定位节点?自定义视图?

Swift 如何缩放/定位节点?自定义视图?,swift,sprite-kit,scaling,Swift,Sprite Kit,Scaling,我正在制作一个游戏,但无法找到正确的方法来缩放/定位所有内容。我有一个通用的应用程序,当我从一个设备切换到另一个设备时,节点每次都不在正确的位置。我使用AspectFill是因为它为每个设备调整了节点的大小。问题在于定位。我不知道我的结论是否正确,我需要弄清楚如何使视图与屏幕大小相同,以便每个设备的视图都发生变化,然后正确地定位和缩放所有内容,但这正是我一直试图弄清楚的。我在网上尝试了许多不同的方法,并研究了如何创建自定义视图。我尝试创建一个矩形,该矩形具有填充屏幕的约束,然后将该矩形设置为与U

我正在制作一个游戏,但无法找到正确的方法来缩放/定位所有内容。我有一个通用的应用程序,当我从一个设备切换到另一个设备时,节点每次都不在正确的位置。我使用AspectFill是因为它为每个设备调整了节点的大小。问题在于定位。我不知道我的结论是否正确,我需要弄清楚如何使视图与屏幕大小相同,以便每个设备的视图都发生变化,然后正确地定位和缩放所有内容,但这正是我一直试图弄清楚的。我在网上尝试了许多不同的方法,并研究了如何创建自定义视图。我尝试创建一个矩形,该矩形具有填充屏幕的约束,然后将该矩形设置为与UIView或SKView相等。我试过很多不同的方法,也在网上看了很多东西,但它们要么让人困惑,我不知道我试的是否正确,要么与我的情况不符。这给我带来了很多困惑,我希望有人能帮我解决这个问题。我认为问题在于我需要创建一个与屏幕大小相关的自定义视图。我不知道这是否可能,或者我应该追求什么。如果有人能帮我澄清这件事就太好了

为了保持游戏的通用性,我根据
SKScene
的大小设置了所有
节点的大小和位置

尝试使用
SKScene
大小中的比例,而不是使用硬编码的数字。例如: 而不是写这封信:

node.position = CGPointMake(100, 100)
写这样的东西:

node.position = CGPointMake(world.frame.size.width / 32 * 16, world.frame.size.height / 18 * 9)
override func viewDidLoad() {
    super.viewDidLoad()

    // Configure the view

    let skView = view as! SKView
    skView.multipleTouchEnabled = false

    // Create and configure the scene

    let scene = GameScene(size: skView.bounds.size)
    scene.scaleMode = .AspectFill
    scene.size = skView.bounds.size

    skView.presentScene(scene);
}
世界-
SKNode
与您的
SKScene

尺寸相同

let blackSquare = SKSpriteNode(texture: nil, color: UIColor.blackColor(), size: CGSizeMake(world.frame.size.width / 32, world.frame.size.width / 32))
另外,
GameViewController
应该如下所示:

node.position = CGPointMake(world.frame.size.width / 32 * 16, world.frame.size.height / 18 * 9)
override func viewDidLoad() {
    super.viewDidLoad()

    // Configure the view

    let skView = view as! SKView
    skView.multipleTouchEnabled = false

    // Create and configure the scene

    let scene = GameScene(size: skView.bounds.size)
    scene.scaleMode = .AspectFill
    scene.size = skView.bounds.size

    skView.presentScene(scene);
}

这是否有帮助?

是否为节点导入1x 2x和3x大小的图片文件?否,我没有。但是,请尽量使图像更轻,但分辨率最高。谢谢,还有,如何使“你的世界”节点与SKView的大小相同,以及在哪里定义它?@StevieThiel在场景中
var world=self
。如果您在场景中创建节点,您只需使用self(只需将
world
替换为
self
)。好的,我这样做了,应用程序的要点是让3个节点在屏幕上向上移动。一个在左边,一个在中间,一个在右边。它适用于iPad,并在模拟器中完美定位。我把Self.Fr.sisi.Wistth/3分成左边的节点,中间的2个。然而,当我在iPhone上使用它时,它的位置太靠左了。我不知道为什么会这样?