我创建了一个新的Xcode游戏项目并选择了SpriteKit。默认情况下,Xcode提供了我修改为添加图像的游戏模板。图像显示在屏幕上但位置不正确。我按照this教程设置了正确的场景尺寸,它可以工作。但是图像仍处于不正确的位置。
我试图将图像定位在Y = 0,但它出现在屏幕的底部而不是顶部。
这是我到目前为止所做的事情。
ViewController代码:
if y % 4 == 0:
return true
return false
场景代码:
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews();
let skView = self.view as! SKView
println(skView)
let scale:CGFloat = UIScreen.mainScreen().scale;
let size = CGSizeMake(skView.frame.size.width*scale, skView.frame.size.height*scale)
if (skView.scene == nil) {
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
// Configure the view.
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
scene.size = size
skView.presentScene(scene)
}
}
else {
skView.scene!.size = size;
}
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
} else {
return Int(UIInterfaceOrientationMask.All.rawValue)
}
}
}
答案 0 :(得分:0)
我认为徽标是底部的红色/绿色框?如果是这样,y = 0是底边,而不是顶边。尝试:
logo.position = CGPoint(x:self.frame.size.width/2,
y:self.frame.size.height - logo.size.height / 2)
答案 1 :(得分:0)
与其他平台的游戏开发不同,spritekit中的y轴从低到高而不是向下运行。在这种情况下,您需要将self替换为self.frame.size.height
logo.position = CGPoint(x:self.frame.size.width/2, y:0) //Your current code
logo.position = CGPoint(x:self.frame.size.width/2, y:self.frame.size.height)//What you want
答案 2 :(得分:0)
由于场景锚点设置为(0,0) - 默认情况下屏幕左下方,我所做的是将锚点设置为(0,1) - 左上角。
self.anchorPoint = CGPointMake(0, 1);
我还为每个孩子设置了相同的锚点,然后我将Y位置设置为负值。
let logo = SKSpriteNode(imageNamed:"imgLogo")
logo.anchorPoint = CGPointMake(0, 1);
logo.position = CGPoint(x:0, y:-180)
self.addChild(logo)
这完美无缺。感谢您的意见。
答案 3 :(得分:0)
为什么y = 0在顶部?把它想象成你在学校学到的图表。 y = 0在底部,x = 0在左侧。所以0,0将位于左下角。