Ich habe in der Vergangenheit einen segmentierten Kartenansatz verwendet. Dies funktioniert für Side-Scroll-Karten, wo Sie einfach ein weiteres Stück auf die Seite hinzufügen. Es funktioniert auch für größere Karten, wo Seiten-, Unter- oder Oberteile benötigt werden.
Ein zusätzlicher Vorteil bei der Verwendung dieses Ansatzes ist die Möglichkeit, falls gewünscht, Ihre Kartenabschnitte nach dem Zufallsprinzip zu sortieren, wenn eine neue Karte geladen wird. Dies eliminiert die "gleiche alte Karte" für eine bestimmte Ebene.
Für das Codebeispiel unten verwende ich identische Kartenabschnitte mit einer Breite von 1280 nebeneinander. Hier sind die Schritte:
Erstellen Sie identische Kartenabschnitte in der Tiled-App. Geben Sie jedem Kartenabschnitt einen eindeutigen Namen, der mit einer Zahl endet. Etwas wie dieses: MyMap-0, MyMap-1, MyMap-2 und so weiter.
Erstellen Sie ein veränderbares Array, das Ihre Kartenabschnitte enthält. Nennen wir es %code% .
Erstellen Sie ein Float-Ivar namens %code% und setzen Sie seinen Anfangswert auf Null.
Wenn Sie eine statische Karte mit 10 Abschnitten erstellen möchten, verwenden Sie diesen Code:
%Vor%Wenn Sie eine zufällige Karte mit 10 Abschnitten erstellen möchten, verwenden Sie diesen Code:
%Vor%Um Elemente in der Objekt-Ebene einer Karte zu laden, können Sie Folgendes tun:
%Vor%In der Update-Methode können Sie ausgewählte Kartenabschnitte basierend auf der Position Ihres Players wie folgt hinzufügen oder entfernen:
%Vor%Abhängig von der Position des Spielers wird ein Kartenausschnitt entweder entfernt oder dem übergeordneten worldNode hinzugefügt.
Eine weitere Optimierung besteht darin, auch Objekte mit physischen Körpern zu entfernen, wenn sie nicht sichtbar sind. Dies ist möglicherweise nicht möglich, je nach Design und Logik deines Spiels.
Sie können dies in der Update-Methode behandeln:
%Vor%Hat es jemand geschafft, nur die sichtbaren Kacheln mit JSTilemap zu laden? Der Grund, den ich stelle, ist, weil meine Kartengröße viel zu groß ist, um auf einmal geladen zu werden, und ich möchte entweder Segmente einzeln laden oder nur die aktuell auf dem Bildschirm sichtbaren Kacheln dynamisch laden.
Ich möchte KoboldKit nicht benutzen.
Bearbeiten: Spannendes Update. Steffan und Marcus arbeiten an einem großartigen Toolkit bei TilemapKit.com. Ich kann es kaum erwarten, Geld auf ihre Art zu werfen.
Dies wurde zuvor gemacht. Sehen Sie hier, wie Sie JSTileMap dazu bringen, das zu tun, was Sie fragen.
Hoffe das hilft!
Nach einiger Zeit aktualisieren: Erste Untersuchungen haben ergeben, dass dies möglicherweise nicht der richtige Weg ist, damit spriteKit Optimierungen für Sie vornehmen kann. Sehen Sie diese kleine Diskussion: Ссылка