In meinem Spiel ändert sich die Position meiner SKNodes leicht, wenn ich die App auf einem virtuellen Simulator vs auf einem echten Gerät (meinem iPad) starte.Wie kann ich SKSpriteNode-Positionen für jeden Simulator/jedes Gerät gleich machen?
Hier sind Bilder von dem, worüber ich spreche.
Es ist schwer zu sehen, aber die beiden roten Kästen sind etwas höher auf meinem iPad als im Simulator
Hier ist, wie ich die Größe und Position des declare rote Felder und grünes Netz: Der folgende Code wird in meiner GameScene.swift Datei befindet
func loadAppearance_Rim1() {
Rim1 = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake((frame.size.width)/40, (frame.size.width)/40))
Rim1.position = CGPointMake(((frame.size.width)/2.23), ((frame.size.height)/1.33))
Rim1.zPosition = 1
addChild(Rim1)
}
func loadAppearance_Rim2(){
Rim2 = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake((frame.size.width)/40, (frame.size.width)/40))
Rim2.position = CGPoint(x: ((frame.size.width)/1.8), y: ((frame.size.height)/1.33))
Rim2.zPosition = 1
addChild(Rim2)
}
func loadAppearance_RimNet(){
RimNet = SKSpriteNode(color: UIColor.greenColor(), size: CGSizeMake((frame.size.width)/7.5, (frame.size.width)/150))
RimNet.position = CGPointMake(frame.size.width/1.99, frame.size.height/1.33)
RimNet.zPosition = 1
addChild(RimNet)
}
func addBackground(){
//background
background = SKSpriteNode(imageNamed: "Background")
background.zPosition = 0
background.size = self.frame.size
background.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(background)
}
Zusätzlich mein GameViewController.swift sieht wie folgt aus
import UIKit
import SpriteKit
class GameViewController: UIViewController {
var scene: GameScene!
override func viewDidLoad() {
super.viewDidLoad()
//Configure the view
let skView = view as! SKView
//If finger is on iphone, you cant tap again
skView.multipleTouchEnabled = false
//Create and configure the scene
//create scene within size of skview
scene = GameScene(size: skView.bounds.size)
scene.scaleMode = .AspectFill
scene.size = skView.bounds.size
//scene.anchorPoint = CGPointZero
//present the scene
skView.presentScene(scene)
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return .Landscape
} else {
return .All
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
Wie kann ich die Positionen meiner Knoten gleich sein für jeden Simulator/physikalische Gerät machen?
@Darvydas diese Frage ist sehr ähnlich zu der einmal in diesem Stapel Überlauf Beitrag beantwortet "http://StackOverflow.com/Questions/33787770/How-to-scale-position-Nodes-Swift-Spritekit-Custom-view " Könnten Sie mir bitte in die richtige Richtung zeigen? –
Vielleicht hat dieses Problem damit zu tun, wie ich den Hintergrund einstelle? –