我的SpriteKit游戏中的精灵尽管缩放得当,但在我的场景中渲染得非常小。我一直在使用类似大小的精灵跟踪一些不同的教程,他们在模拟器中缩放得很好。以下是一些代码段和屏幕截图。例如,屏幕右上角的暂停按钮非常小,但资产的实际分辨率是标准尺寸。
GameScene.swift
private let pauseTex = SKTexture(imageNamed: "PauseButton")
...
private func setupPause() {
pauseBtn.texture = pauseTex
pauseBtn.size = pauseTex.size()
pauseBtn.anchorPoint = CGPoint(x: 1.0, y: 1.0)
pauseBtn.position = CGPoint(x: size.width, y: size.height)
pauseBtn.zPosition = Layer.Foreground.rawValue
worldNode.addChild(pauseBtn)Btn)
...
}
GameVC.swift
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
...
if let skView = self.view as? SKView {
if skView.scene == nil {
let aspectRatio = view.bounds.size.height / view.bounds.size.width
let scene = MenuScene(size: CGSize(width: 750, height: 750 * aspectRatio))
scene.scaleMode = .aspectFill
skView.ignoresSiblingOrder = true
...
}
}
}
答案 0 :(得分:1)
基本上这里发生的事情是迈克对场景大小与屏幕尺寸混淆了。他认为,由于精灵是32像素,它应该占据iPhone SE屏幕的10%,因为它有1倍宽度320(原来它是640 [2x])但实际上,他的场景是750像素宽,所以它只显示在5%。 他将他的场景大小改为375x667(iPhone 6非视网膜分辨率)以正确使用视网膜图形,现在一切都应该为他调整。
他现在唯一会遇到的问题是在iPad设备上裁剪。他只需要在安全区工作。
答案 1 :(得分:0)
由于不同设备之间的分辨率差异,您的资产规模并不总能反映屏幕上所需的尺寸(如果SKScene
scaleMode
设置为{ {1}})。如果您想要精灵的特定尺寸,则需要将resizeFill
' SKNode
属性设置为所需的值。
您的方法会是什么样子:
size