Laden...

XNA: Terrain Kollision 2D

Erstellt von Vhelium vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.397 Views
V
Vhelium Themenstarter:in
28 Beiträge seit 2011
vor 12 Jahren
XNA: Terrain Kollision 2D

Hallo zusammen,

Ich bin fleissig mit XNA probieren und wollte jetzt für mein Spiel Physics einbauen.
Dabei soll der Charakter (Es ist ne Art SideScroller / Jump n Run) dem Weg entlang rennen können und dabei aber nicht nur gerade aus sondern auch schräg. Z.B einen Hügel hinauf und wieder hinab.

Wie aber mache ich das mit der Kollisionsüberprüfung?

Und wie wäre das Terrain am besten gespeichert? Ein Bitmap oder die Platformen als Vectoren (Linestrips) abspeichern.

Die Map wird unveränderbar sein und in einem Mapeditor (welcher noch nicht existiert) erstellt.

Im Anhang noch ein Bild ums es sich besser vorstellen zu können. Die violette Linie zeigt wo das Terrain auf Kollision überprüft werden muss, resp. die Linie wo der Charakter "entlang läuft".

Freue mich auf eine Antwort.
MfG Vhelium

#define TRUE FALSE //Happy debugging suckers

26 Beiträge seit 2011
vor 12 Jahren

kollisionserkennung is in spielen ein recht großes themengebiet und nicht mal eben schnell zu erklären. es besteht die möglichkeit das ganze einfach von einer engine machen zu lassen, oder (was bei dir sicherlich reicht) das ganze selber zu schreiben.

einfacher isses dann wenn deine map auf tiles basiert.
hier sind mal 2 nette tuts die dir sicherlich weiterhelfen:

part1:
Tile based Map - Teil 1
part2:
Tile based Map - Teil 2

ich hoffe ich konnte helfen

[kleincodiert.at]() Der schnelle Einstieg in C++, C# und Java [kleincodiert.at auf Facebook]() [kleincodiert.at auf Twitter]()
V
Vhelium Themenstarter:in
28 Beiträge seit 2011
vor 12 Jahren

Die Physics werde ich in der Tat wie du gesagt hast mit engines lösen.

Die Tilemap ist eben nicht was ich suche. Ich hab nit denen schon gearbeitet, es ist eben nicht das, was ich brauche.
Es müsste, wie im Bild, die Kollision mit der (Aus linien bestehenden) violrtten strecke überprüft werden, welche nicht unbedingt horizontal sind.

MfG Vhelium

#define TRUE FALSE //Happy debugging suckers

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Vhelium,

du kannst Region.Intersect (GraphicsPath) zusammen mit Region.IsEmpty verwenden.

herbivore

5.658 Beiträge seit 2006
vor 12 Jahren

Wie aber mache ich das mit der Kollisionsüberprüfung?

Ich nehme an, daß du die violette Linie bereits vorliegen hast, und zwar als Folge von 2D-Punkten (mit X- und Y-Koordinaten). Zwischen den Punkten befinden sich dann die einzelnen Liniensegmente. Auf welchem Liniensegment sich dein Charakter befindet, kannst du herausfinden, indem du die X-Koordinaten der Position des Charakters mit den Anfangs- und Endpunkten der Liniensegmente vergleichst.

Daraus kannst du dann die von dir gesuchte Y-Koordinate des Charakters errechnen, indem du die X-Koordinate in die Geradengleichung einsetzt.

Weeks of programming can save you hours of planning