Hallo Zusammen,
ich arbeite gerade in einem Endlos-Side-Scroller-Game, bei dem auf dem Bildschirm zufällig Items zum einsammeln erscheinen sollen.
Ich habe mir im Vorfeld überlegt ein selbstgebasteltes Grid (32 Felder/SpriteNodes) über die gesamte Bildschirmbreite zu legen und dieses dann via STPrallax zu scrollen. Das klappt soweit.
Deshalb ein Grid, weil ich das Gefühl habe, dann einen guten Einfluss darauf zu haben, wo Items platziert werden dürfen/können/sollen.
Anschliessend prüfe ich ob ein Feld aus dem Grid (position.x) in den negativen Bereich rutscht. Ist das der Fall, soll ein zufälliges Item in das Feld geladen werden (wird ja immer wiederholt).
Und hier liegt - glaube ich - der Knackpunkt. So wie ich es realisiert habe, ist es recht Ressourcen-Hungrig. Mal davon ab, ob die Idee mit dem Grid die Ideal-Lösung ist (Vorschläge auch gern gesehen :D).
Gibt es gezielt die Möglichkeit auf eine gewisse Ebene die Children abzufragen? Schaut mal wie ich das gemacht habe (gruselig):
Alles anzeigen
Ich hoffe das alles verständlich war... und ich freue mich auf eure Idee, Ratschläge etc.
Gruß,
Florian
ich arbeite gerade in einem Endlos-Side-Scroller-Game, bei dem auf dem Bildschirm zufällig Items zum einsammeln erscheinen sollen.
Ich habe mir im Vorfeld überlegt ein selbstgebasteltes Grid (32 Felder/SpriteNodes) über die gesamte Bildschirmbreite zu legen und dieses dann via STPrallax zu scrollen. Das klappt soweit.
Deshalb ein Grid, weil ich das Gefühl habe, dann einen guten Einfluss darauf zu haben, wo Items platziert werden dürfen/können/sollen.
Anschliessend prüfe ich ob ein Feld aus dem Grid (position.x) in den negativen Bereich rutscht. Ist das der Fall, soll ein zufälliges Item in das Feld geladen werden (wird ja immer wiederholt).
Und hier liegt - glaube ich - der Knackpunkt. So wie ich es realisiert habe, ist es recht Ressourcen-Hungrig. Mal davon ab, ob die Idee mit dem Grid die Ideal-Lösung ist (Vorschläge auch gern gesehen :D).
Gibt es gezielt die Möglichkeit auf eine gewisse Ebene die Children abzufragen? Schaut mal wie ich das gemacht habe (gruselig):
Quellcode
-
- self.lastSpawnTimeInterval += timeSinceLast;
- if (self.lastSpawnTimeInterval > 1.5) {
- self.lastSpawnTimeInterval = 0;
- // Get StuffGrid:
- [self.parallaxNode enumerateChildNodesWithName:@"stuffGrid" usingBlock:^(SKNode *node, BOOL *stop){
- // Get StuffGrid Rows:
- [[_stuffGrid children] enumerateObjectsUsingBlock:^(SKNode *node, NSUInteger idx, BOOL *stop){
- // Get StuffGrid Pieces an check them:
- [[node children] enumerateObjectsUsingBlock:^(SKNode *node, NSUInteger idx, BOOL *stop){
- // Wenn es tatsächlich eine StuffCell ist:
- if ([[node.name substringWithRange:NSMakeRange(0, 10)] isEqual: @"stuffCell_"]) {
- NSLog(@"STUFF CELL: %@",node.name);
- // Wenn die Cell außerhalb des sichtbaren Bereichs ist:
- NSLog(@"node position: %f", node.position.x);
- if(node.position.x < 1){
- // Füge ein neues Item hinzu:
- [node addChild:[self spawnItemInNode:node]];
- }
- }
- }];
- }];
- }];
- }
Ich hoffe das alles verständlich war... und ich freue mich auf eure Idee, Ratschläge etc.
Gruß,
Florian