Ich versuche, ein Side-Scrolling-Spiel mit Apple SpriteKit zu machen. Wenn ich einen endlosen Scroll-Hintergrund machen wollte, stieß ich auf diese answer.Endless Scrolling Hintergrund in SpriteKit
Nach der Implementierung der Lösung scheint es zu funktionieren obwohl es fällt meine FPS deutlich. Dies liegt wahrscheinlich daran, dass die Bildpositionen in jedem Bild neu berechnet werden.
Ich fühle mich wie es wäre viel besser, wenn ich einen oder mehrere SKAction
Anrufe verwenden könnte, um diese Animation für mich zu kümmern, aber ich bin mir nicht sicher, wie man es implementiert.
Gedanken?
Der Code, den ich bisher in meiner Szene Klasse
- (void)addBackgroundTileAtPoint:(CGPoint)point {
SKSpriteNode *bg = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
bg.anchorPoint = CGPointZero;
bg.position = point;
bg.name = @"background";
bg.zPosition = -99;
[self addChild:bg];
SKAction *sequence = [SKAction sequence:@[
[SKAction moveByX:-(bg.size.width * 2) y:0 duration:10],
[SKAction removeFromParent]
]];
[bg runAction: sequence];
}
Aktionen werden Ihnen nichts nützen, wenn das Scrollen nicht konstant ist: gleiche Richtung bei gleicher Geschwindigkeit. Selbst dann bezweifle ich, dass Aktionen deutlich schneller sein werden als die Implementierung der Antwort. Obwohl es möglicherweise schneller ist, wenn Sie anstelle von enumerateByName nur Referenzen auf die beiden Hintergrund-Sprites haben, damit SK das Knotendiagramm nicht nach Namen durchsuchen muss. – LearnCocos2D
Sie benötigen einen rekursiven Aufruf hier innerhalb * Sequenz. zB nach [SKAction removeFromParent], fügen Sie [self addBackgroundTileAtPoint:]; hinzu, oder verwenden Sie repeat action, ohne den Hintergrund aus der Superansicht zu entfernen. –
@ LearnCocos2D Wenn Aktionen nicht der richtige Weg sind, haben Sie Vorschläge zur Optimierung der anderen Antworten Lösung oder hatten Sie eine andere Lösung. Wenn die Lösung dieser Antwort auf dem Emulator ausgeführt wird, fällt der FPS sofort von 60 auf ~ 30 ab. –