Wie erstelle ich ein 2D-Spielgelände?

8

Letzten Monat habe ich viel in der Spieleentwicklung mit cocos2d für das iPhone experimentiert, insbesondere beim Verschieben und Ändern von Sprites. Eckpunkte und Polygone sind für mich jedoch immer noch neu.

Ich habe einen Algorithmus entwickelt, der eine Reihe von Punkten erstellt. Ich möchte sie jetzt verwenden, um mein 2D-Gelände zu erstellen. So sieht es aus, wenn ich die Punkte in Java verbinde, damit Sie auf die Idee kommen

Ein Liniendiagramm verbundener Punkte

Die Punkte sind mit Linien verbunden. Ein echtes Spielgelände ist jedoch eine Form, die farbig ist oder eine Textur überlagert hat, oder? Zum Beispiel:

Ein Bild von Gelände im Spiel, das hübsch aussieht

Wie könnte ich meine Punkte verwenden, um ein solches Terrain zu erstellen?

Was ich bisher versucht habe, ist, dass ich ein Array erstellt und es mit meinen Punkten gefüllt habe. Ich übergebe dieses Array an diese Methode

void ccDrawPoly ( const CGPoint *  vertices,
    NSUInteger  numOfVertices,
    BOOL  closePolygon   
)   

Zeichnet ein Poligon mit einem Zeiger auf CGPoint-Koordinaten und der Anzahl der in Punkten gemessenen Scheitelpunkte. Das Polygon kann geschlossen oder offen sein

Dies zeichnet tatsächlich eine einfache Form. Aber auf dem blauen Bild sieht es so aus, als gäbe es nicht eine Form, sondern viele.

Bitte teilen Sie Ihr Wissen darüber, wie Sie 2D-Spielgelände erstellen.

Update 03.06.2011

Basierend auf den beiden guten Antworten habe ich folgendes Ergebnis

Geben Sie hier die Bildbeschreibung ein

In OWL verloren
quelle

Antworten:

5

Die einfache / naive Lösung wäre einfach, Ihre vorhandenen Punkte zu nehmen und für jeden Punkt einen entsprechenden Punkt zu haben, der sich an derselben Y-Position befindet, jedoch außerhalb des Bildschirms. Erstellen Sie von dort aus Ihr Polygon, indem Sie beispielsweise das Paar der Punkte 0, 1, 1 und 0 nehmen und dieses an Ihre DrawPoly-Methode übergeben. Fahren Sie dann mit (1, 2, 2 Paar, 1 Paar) usw. fort.

Tetrad
quelle
Y steht für die Höhe. Ich verstehe nicht, wie es das gleiche Y sein kann, aber gleichzeitig außerhalb des Bildschirms. Ich würde bedeuten, dass das X außerhalb des Bildschirms ist ...? Ich verstehe deine Idee nicht.
Verloren in OWL
1
Ersetzen Sie dann Y durch X. Sie sind nur Punkte, die gerade nach unten sind.
Tetrad
Die Linien in Ihrem aktualisierten Bild sollten gerade nach unten zeigen. Nicht kreuz und quer.
Tetrad
Großartig, verstanden. Siehe mein Update :)
Verloren in OWL
4

Ich würde Ihr Array zwei Punkte gleichzeitig durchlaufen und zwei weitere Punkte extrapolieren (indem ich den X-Wert für jeden der beiden verwende und den Y-Wert 0 mache), um Ihnen den Grund Ihrer Form zu geben. Übergeben Sie diese vier Punkte an ccDrawPoly () und wiederholen Sie den Vorgang, bis Ihnen die Array-Werte ausgehen.

Also, wenn Sie gesagt haben:

P1 = (0, 25)
P2 = (5, 30)
P3 = (10, 20)
P4 = (15, 25)
for the first shape, you pass in P1, P2, (0, 0), and (5, 0)
second shape is P2, P3, (5, 0), (10, 0)
third shape is P3, P4, (10, 0), (15, 0)
etc...
Ren der Unreine
quelle