organisation



  • ich habe ein kleines problem in meinem 2d-spiel möchte ich gerne eine art gravitation wirken lassen

    eigentlich wirkt diese kraft auf alle objekte im spiel nur auswirkungen hat sie eben nicht für alle

    zB Wände bleiben stehen

    ich überlege nun ob ich gravitation vielleicht zu einem bestandteil der klassen machen soll bei denen gravitation auswirkungen hat oder gravitation als globale funktion auf alles wirken lasse und dann entscheide ob sich was ändert oder nicht
    in der art

    für alle objekte, die von gravitation beeinflusst werden
    {
    objekt.gravitation()
    }

    gravitation(objekte*)
    {
    entscheide was zu tun ist()
    }

    ich hoffe man versteht was ich meine... was ist denn besser?



  • Hallo,

    also ich würde sagen, du solltest schon die Objekte irgendwie markieren, auf die keine Gravitation wirken soll. Denn wenn man wirklich für jedes Objekt einzeln in einer Methode entscheiden will, wird die Methode sehr aufgebläht.

    Ich hatte dazu zwei verschiedene Lösungen bei verschiedenen Spielen.

    Einmal hatte ich den Objekten je eine Eigenschaft (ApplyGravity) verpasst und dann eben Gravitation auf alle angewendet, bei denen das gesetzt war.

    In einem anderen Fall hatte ich eine wesentlich kompliziertere Physik Engine, bei der ich je Objekt die reziproke Masse gespeichert habe. Diese konnte man auf 0 setzten, was einer unendlichen Masse entspricht. Die Objekte waren dann immobil. Obwohl man dann natürlich trotzdem eine Sonderbehandlung braucht und nicht einfach annimmt, dass Gravitation automatisch die Beschleunigung g verursacht. Aber das ist off-topic.

    Eigentlich sehe ich keine Vorteile an einer riesigen Methode, außer dass eben alles an einer Stelle ist (aber trotzdem unübersichtlich). Ist natürlich alles nur meine Meinung und darf gerne korrigiert werden.


Log in to reply