Ergebnis 1 bis 20 von 20

Thema: Vorstellung und Demo - FawesomeEngine

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Was solls denn können bzw. für welchen Zweck?

    Bei Kollisionsabfragen kommt immer schnell der Begriff "pixelgenau", was je nach Anwendungszweck unbrauchbar und unnötig kompliziert ist.

    Ich hatte es in meinem 2D-Movement so gemacht:
    - Kollisions zwischen Figuren und Dekorationsobjekten über Kreise zu Füßen der Charaktere, inspiriert von dem sehr einfachen Prinzip der "Hitbox" wie man sie als alten Spielen kennt. Abstand Zwischen Char1-XY und Char2XY < Char1Radius+Chars2Radius = Kollision. hab das Prinzip auch mal in einem Beispielprojekt gesehn in dem es drum ging wie man tausende Sprites (explosionen etc.) gleichzeitig haben kann ohne dass die Engine an der Kollisionsberechnung zugrunde geht.
    - Kollision mit der Map über einen unsichtbaren Kollisionslayer, eine 2D Grafik in der Größe der Map mit geringer Farbauflösung wobei die einzelnen Farben für "unpassierbar" und die verschiedenen Bodentypen standen. In Java kann man problemlos in Grafiken hineinmalen, Plan war es auch, dass Objekte im Raum, die nicht auf den Mapgrafiken vorhanden sind sich ihre Kollisionsumrisse in die Kollisionsmap mit hineinmalen. Die 2D Grafik als Kollisionsinformation mag etwas sonderbar wirken, ist aber im Grunde auch nicht mehr als ein pixelgenaues Raster, dass sich sehr einfach im Grafikprogramm zusammen mit den Mapgrafiken erstellen lässt. Abfrage der Kollision "Kollisionslayer<->Charaktere" erfolgte über Punktprüfung entlang des Kreisrandes der Charaktere in Bewegungsrichtung, je nach Radius der Charakterkollisionskeises reichen mitunter 8 Prüfunkte, was je Bewegung zu 4 Koordidatenberechnungen führt.

    War sicherlich nicht die technisch ultimativste Lösung, besonders letzteres war eher Zuarbeit für meine Art und Weise Grafiken zu basteln, sieh diesen Post also nicht als "so ist es toll,so solltest du auch" sondern eher als kleinen Denkanstoß im Für- und Wider der Entwicklung deiner Lösung.

    Deine Lösung würde mich auch mal interessieren.

  2. #2
    Das "pixelgenau" schwirrte mir auch im Kopf herum, hab ich aber schnell wieder verworfen.

    Die Annäherung einer "Hitbox" hab ich einfach java.awt.Rectangle genommen und zu dem "Objekten" auf der Karte hinzugefügt. Da gibt es die Methode boolean a.intersects(Rectangle b) (also schneiden/kreuzen).
    Damit es schnell geht, hab ich die Kollisionsabfrage einfach nur auf dem Layer der Spieler-Charaktere gemacht. Sind eben nur so viele Abfragen wie es Objekte auf dem Layer gibt.

    Das mit der Idee von dir mit der Kollision bei der Map hört sich gut an, so weit hab ich gar nicht gedacht. Ich muss nur überlegen, wie ich das realisieren kann.
    Ich habe das auch so ähnlich verwirklicht und noch ein Partikelsystem zusammengebaut.

    Geändert von niR-kun (18.09.2011 um 00:16 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •