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