Kollisionsprüfung mit Rechtecken und Linien

  • VB.NET
  • .NET 4.5

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von EaranMaleasi.

    Kollisionsprüfung mit Rechtecken und Linien

    Hi liebe VB-Paradiseler,

    wage mich momentan an mein erstes Spiel, einen Klon von Sonic the Hedgehog für den Sega Mega Drive.
    Dabei orientiere ich mich am "Sonic Physics Guide"(info.sonicretro.org/Sonic_Physics_Guide), welcher Schritt für Schritt jeden Aspekt der Physics abarbeitet.

    Nun mein Problem:
    Für die Collision Detection nutze ich Sensorlinien, welche Kollision mit den Tiles prüfen(siehe Bild im Anhang).
    Doch wie bewerkstellige ich das Prüfen der Kollision mit einer Linie und einem Rechteck?

    Das Prüfen, ob der Start/Endpunkt im Rechteck sind, ist einfach, doch was wenn beide außerhalb des Rechtecks sind und die Linie trotzdem durch das Rechteck verläuft?

    Hat jemand eine Idee?

    Grüße,
    Cremetoertchen
    Bilder
    • SPGSensors.png

      3,87 kB, 384×128, 25 mal angesehen
    @Mircosofter2206 Da musst Du ein wenig Mathematik machen.
    Zunächat verwendest Du die Methode Rectangle.Contains(Point).
    Wenn die Randpunkte der Linie außerhalb des Rectangles liegen, musst Du den Punkt der Linie (Gerade) berechnen, der sich in der halben Höhe innerhalb des Rectangles befindet.
    Diesen testest Du dann.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Die Anforderung ist noch höchst ungenau.
    Zunächstmal: Um welche Datentypen geht es?
    Tatsächlich um System.Drawing.Rectangle?
    Und wie lautet der Datentyp, der eine Linie darstellen soll?

    Die nächste Frage ist, ob nur Senkrechten und Waagerechte vorkommen, oder ob Rechtecke auch gedreht, und Linien schief sein können.
    DA es sich um einen Sonic-Klon handelt, kommen nicht nur gerade linien in allenmöglichen Winkeln, sondern auch allerhand Kurven vor.
    Post-AGB:
    §1 Mit dem Lesen dieses Posts stimmst du den AGB unverzüglich zu
    §2 Ein Widerruf muss innerhalb von 3 Sekunden nach Lesen des Hauptbestandteil des ersten jemals gelesenen Posts erfolgen
    Abs.1 Die Signatur zählt nicht zum Hauptbestandteil des Posts
    §3 Ein erfolgreicher Widerruf zwingt zu einem Besuch bei einem Hypnotiseur oder Neurochirurg, sodass der gelesene Text aus den Erinnerungen entfernt werden kann
    Abs.1 Die Kosten und Risiken sind jeweils selbst zu tragen