Unity Engine

  • Globale Koordinaten geben ab, wie weit du in x,y,z Richtung vom Ursprung entfernt bist.
    und lokale, wie weit du in den x,y,z vom Parent objekt entfernt bist, mit Berücksichtigung der Rotation von diesem parent Object.


    so ist es jedenfalls im Blender...

  • Das Stimmt, ich habe mich etwas ungenau ausgrdrückt:


    Ich habe zur zeit:


    Einen "LocalSpace"
    und einen "Global Space".


    im Global Space (faktor 10000 verkleinert wegen floating point geschichten) kann sich ein Objekt bewegen, nähert sich nun ein anderes Objekt an, wird dieses in den Local space geladen und wird anhand von berechnungen entsprechend dem Referenzobjekt bewegt.


    Habe das mal in einen Bild verbildlicht.


    Im Multiplayer habe ich aber diskrepanzen bezüglich der positionierung.

  • Wie groß willst du die die Spielwelt machen, dass float nicht ausreichen?


    Gameobjekte in Unity haben grundsätzlich eine globale Position (transform.position) und eine lokale Position (transform.localPosition) relativ vom Elternobjekt.


    Ich habe mal irgendwo gelesen, dass bei Space-spielen in riesigen Welten wo die Ungenauigkeiten von float-Zahlen nicht mehr ausreichen nicht die Spieler bewegt wird, sondern das Universum und der Spieler bliebt auf Position 0 ;)


    Den Sinn deines Umrechnens von global zu local habe ich nicht ganz verstanden.

  • Ich glaube, so meint seb das auch ...


    Ich versteh das so, dass du wirklich 2 verschiedene Szenen hast, die gegenseitig auf sich reagieren.
    In der "lokalen Szene" werden nur Sachen dargestellt und geladen, die nah genug sind um genau berechnet zu werden. Und die "Globale Szene" um Sachen bis in die Unendlichkeit zu sehen. Das aber auf Kosten der Genauigkeit...
    richtig?



    Joa ich würde sagen du fügst ein leeres Objekt X in die Globale Szene ein. Und behandelst es so wie du das Raumschiff halt behandeln willst.
    Nur nicht rotieren, das macht das ganze später unnötig umständlich... außer du hast total bock dich mit einer Rotations Matrix auseinander zu setzen :D


    Kommt Object Y diesem Objekt X zu nahe. Rechnest du aus, wie weit es in XYZ Richtung(lokal) von dem entfernt ist.
    Wie man lokale Unterschiede halt ausrechnet: x - y


    multiplizierst das mit 10^4 (oder so) und haust das in die lokale Szene rein.
    Die Geschwindigkeit von Objekt Y in der lokalen Szene ist dann vX + vY.


    wird halt ziemlich schnell ziemlich komplex...
    Aber wenn du das jetzt lernst musst du es nicht mehr im 12. Schuljahr im Mathe LK lernen :crylaugh:
    Übermorgen hab ich etwas zeit dann kann ich das ja mal im Blender ausprobieren