2016-06-16 22 views
1

ich die beste Art und Weise bin auf der Suche die Ebene für ein Spiel zu bauen:Aufbau eine Netzebene für ein Spiel mit SpriteKit und SWIFT

  • Das Spiel mit vielen Ebenen zusammengesetzt wird, wird jede Ebene einzigartig .
  • Sie spielen ein Objekt (hier der Stern), die in Bewegung ist auf einem Raster.
  • Das Objekt kann nur nach unten bewegen, es kann nicht zurückgehen.
  • Ein Level besteht aus vielen Fällen, jedes Case hat ein anderes Verhalten.
  • Mein Level wird einen Hintergrund haben, Breite des Bildschirms, aber die Höhe wird von der Ebene abhängen, nehme ich an, oft die Höhe des Bildschirms.
  • Die Hintergrund bewegt sich auf den Objektbewegungen abhängig jetzt

Denn ich bin auf einem kleinen Prototyp arbeiten, nur um zu lernen.

proto

Nach vielen Tutorials zu lesen, ist meine Idee x Quadrate (Diamantform) mit SKSpriteNode zu erstellen. Und um die Quadrate mit Identifikatoren zu identifizieren.

Ich weiß nicht, ob es eine gute Lösung in Bezug auf die Leistung ist? Sie werden viele Quadrate auf einer Ebene sein. Ich weiß nicht :)

Sind wir mit den Nummern der Knoten in einer Szene begrenzt?

+0

Du bist wahrscheinlich sicher, bis Sie zu 100 oder mehr erhalten Knoten in der Szene, aber es hängt alles davon ab, wie viel "Arbeit" diese Knoten in Bezug auf wie viel Physik jeder benötigt oder wenn Sie eine Menge Berechnungen in tun müssen die update() -Methode. –

+0

@SteveIves keine Physik, muss nur erkennen, ob das Objekt auf dem quadratischen Knoten ist – cmii

+0

@SteveIves In Sprite Kit sind Sie sicher _way_ über 100 Knoten. 1.000 oder 10.000 ist kein Problem ** wenn ** Sie die Anzahl der Draw-Aufrufe niedrig halten. – CloakedEddy

Antwort

1

Ich denke, es ist nicht notwendig. Sie können auch einen einzelnen SKSpriteNode Hintergrund verwenden, der von Quadraten CGPath 's gefüllt wird und Sie können ein sehr schnelles Spiel machen, wenn Sie schwierige Niveaus erhöhen möchten. Sie können Ihren "funktionalen" Teil des Spiels organisieren, indem Sie mit jedem CGPath arbeiten und wenn Sie ein Quadrat in diesem Fall ändern müssen, können Sie ein Quadrat mit dem erstellen, das dieses Quadrat darstellt, geben Sie ihm einen Namen, der zum Beispiel auf einem Index basiert leicht verstehen, wer sie ist, CGPath beteiligt die Verwendung und zur Benutzung des SKSpriteNode zu:

  • Abdeckung des quadratischen Hintergrund
  • einen Effekt machen wie Explosion
  • verfärben eines Quadrats anstelle von allgemeinen quadratischen Farben
  • usw. ..

PS: Ich habe gesehen, wie du einen Scroll erstellen möchten, ist es eine schöne Spritekit Bibliothek in schnellen CustomScrollViewhere genannt, die nützlich sein können, es ist einfach zu bedienen:

scrollView = CustomScrollView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height), scene: self, moveableNode: moveableNode, scrollDirection: .Vertical) 
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height * 3) // makes it 3 times the height 
view?.addSubview(scrollView) 

aktualisieren : über deinen Kommentar ist die Antwort ja: Wenn du mit einem Pfad arbeitest, arbeitest du mit einer Gruppe von Elementen, die in Punkten organisiert sind (schau dir post an, um zu verstehen, wie).

Sie können die nativen verwenden:

CGPathContainsPoint(<#T##path: CGPath?##CGPath?#>, <#T##m: UnsafePointer<CGAffineTransform>##UnsafePointer<CGAffineTransform>#>, <#T##point: CGPoint##CGPoint#>, <#T##eoFill: Bool##Bool#>) 

oder verwenden:

CGPathGetPathBoundingBox(<#T##path: CGPath?##CGPath?#>) 

es zu benutzen:

CGRectIntersectsRect(<#T##rect1: CGRect##CGRect#>, <#T##rect2: CGRect##CGRect#>) 
+0

Vielen Dank für Ihre Idee! Ist es möglich, Schnittpunkte zwischen meinem Objekt (SKSpriteNode) und dem CGPath (Quadrat) zu erkennen? – cmii

+0

Ich habe meine Antwort aktualisieren –

+1

nicht UIScrollView verwenden, ist es keine gute Idee, UIKit und SpriteKit zu mischen, gibt es riesige Leistungsprobleme, Erstellen Sie einfach einen großen Knoten, und verwenden Sie die Scene-Kamera, um den großen Knoten – Knight0fDragon