Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
XNA: Terrain Kollision 2D
Vhelium
myCSharp.de - Member



Dabei seit:
Beiträge: 29
Herkunft: Seuzach / Schweiz

Themenstarter:

XNA: Terrain Kollision 2D

beantworten | zitieren | melden

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
Attachments
#define TRUE FALSE //Happy debugging suckers
private Nachricht | Beiträge des Benutzers
Wirago
myCSharp.de - Member

Avatar #avatar-3564.png


Dabei seit:
Beiträge: 28
Herkunft: Stockerau

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Vhelium
myCSharp.de - Member



Dabei seit:
Beiträge: 29
Herkunft: Seuzach / Schweiz

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Vhelium,

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

herbivore
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5967
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von Vhelium
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
private Nachricht | Beiträge des Benutzers