Wie implementieren sie in Spielen wie City Story oder We Farm das Scrollen?
Um mit UIScrollView scrollen zu können, muss die EAGLView-Größe größer sein. In diesen Spielen sieht die Größe von EAGLView wie mehr als 1024 * 1024 aus. Aber es gibt Einschränkungen in der Anzeigengröße in iPhone - Geräten (in 3G iphone max 1024).
Ich habe diese Spiele in 3G iPhone gespielt, sie funktionieren gut.
Irgendeine Idee, wie sie ihren Bildlaufmechanismus implementiert haben?
Ein Scroller ist ganz einfach ein "virtuelles Ansichtsfenster", das neue Kacheln / Objekte aus der Richtung, in die Sie scrollen, hineinschiebt.
Ein einfaches Beispiel, um dies zu sehen, ist das Erstellen eines einfachen 1-Zeilen-Auswahlrahmens (Textscroller).
Nehmen wir zum Beispiel an, wir haben eine Zeile mit 20 Zeichen / Buchstaben / Zeichen.
Wir platzieren sie in einem String / Array wie:
Wenn wir dies jetzt drucken, sehen wir nur die "Punkte".
Um es zu scrollen, müssen wir die Punkte nach links bewegen. So können wir den eingehenden Text lesen.
Damit dies geschieht, entfernen wir den ersten Buchstaben von links und fügen den nächsten hinzu, der von rechts angezeigt wird.
also sagen wir:
den 2. Buchstaben nehmen und weiterleiten, was dem Rest des aktuellen Inhalts des Ansichtsfensters entspricht.
Jetzt ist das Ansichtsfenster 1 Zeichen / Buchstabe zu schmal, sodass wir das nächste Zeichen aus dem Scroller hinzufügen müssen. Daher benötigen wir eine Variable, um zu steuern, wo wir uns im Bildlauftext befinden.
Mit diesem Index können wir nun das nächste Zeichen finden.
Fügen Sie dies dann dem Ansichtsfenster hinzu.
Und erhöhen Sie Ihre Position im Scrolltext.
Jetzt haben wir den Inhalt 1 Zeichen übrig gescrollt.
Machen Sie dies immer und immer wieder und es sieht so aus, als würde die "Hallo Welt" über Ihr Ansichtsfenster scrollen.
Stellen Sie sich nun diesen Trick in alle Richtungen vor. Anstelle von Zeichen verwenden Sie Ihre eigenen "Kacheln". Zweitens, um es reibungslos zu machen, fügen Sie Ihrem Scroller auch eine "Pixel-Schriftrolle" hinzu oder Sie multiplizieren Ihre Scrollpos der Einfachheit halber einfach. Wenn Sie dann herausfinden müssen, welche Kachel als Nächstes hinzugefügt werden soll, teilen Sie einfach Ihre aktuellen Bildlaufpositionen durch die Kachelbreite. Dann wissen Sie, ob Sie den Bildlaufinhalt des Ansichtsfensters in eine beliebige Richtung verschieben müssen.
Wenn Sie Arrays scrollen müssen (mit Kachel- / Blockdaten), können Sie dies mit einfachen for-Schleifen tun.
linke Schriftrolle
Puh
Das war eine lange Erklärung. Verstehst du meinen Standpunkt hier oder brauchst du weitere Erklärungen?
quelle
Scrollen bedeutet nicht unbedingt, alles in den Speicher zu laden. Der übliche Weg, um damit umzugehen, besteht darin, Ihren Inhalt in Kacheln zu unterteilen, die nach Bedarf in den Speicher geladen werden. Apple hat unter http://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Introduction/Intro.html ein Beispiel für die Anzeige großer Bilder.
Spiele neigen jedoch dazu, etwas anderes zu tun. Selbst wenn es möglich ist, die vorherige Technik zu verwenden, ist das Laden von Daten von der Festplatte langsam und kann das Spielerlebnis für den Benutzer stören. Aus diesem Grund wird der zu scrollende Bereich normalerweise in Teile geschnitten, die Sie später wiederverwenden können, wodurch das Gefühl entsteht, dass die ganze Welt größer ist, als sie wirklich in Erinnerung bleiben könnte.
Sie können mehr über Kacheln mit einem Karteneditor wie Tiled Map Editor erfahren und im Internet nach Tutorials suchen, wie Sie sie verwenden / in Ihr Spiel integrieren können. Spiele wie Diablo verwenden bekanntermaßen gekachelte Karten, die logisch in größere Kacheln aufgeteilt sind, die zusammengeklebt sind und bei jedem Spiel riesige pseudozufällige Karten erzeugen.
quelle
Eine andere Möglichkeit, das Scrollen für ein 2D-Spiel zu implementieren, besteht darin, Ihre Projektionsmatrix so zu manipulieren, dass sie widerspiegelt, wo sich der Bildschirm / die Kamera in der Spielwelt befindet.
Ich habe eine 2D-Kameraklasse implementiert, die ihre Position und die Breite / Höhe des sichtbaren Bereichs hatte. Bevor Sie die Spielwelt zeichnen, richten Sie die Orthoprojektionsmatrix ein.
z.B
Ich hoffe das hilft. Oh, und Sie würden die Projektionsmatrix auf etwas anderes zurücksetzen, wenn Sie anschließend UI-Elemente usw. zeichnen möchten.
All dies gilt natürlich nur, wenn Sie Ihr Spiel in openGL schreiben.
quelle
Weitere Informationen finden Sie in diesem Tutorial: - http://www.raywenderlich.com/2343/how-to-drag-and-drop-sprites-with-cocos2d
Dieses Tutorial enthält Informationen zum Scrollen in der Ansicht und mit uipanrecogniser.
das wird helfen.
quelle