letsgamedev / spielsklave

Das Spiel das du auf https://www.youtube.com/letsgamedev mitbestimmst!
109 stars 9 forks source link

Stein fliegt durch Zäune #103

Closed tkoebf closed 6 years ago

tkoebf commented 7 years ago

man kann Steine durch zäune wegpusten oder einsaugen.

FSMaxB commented 7 years ago

Logisch, wenn man Tom's Video schaut ist das klar, der Algorithmus ist fehlerhaft, weil er am Anfang nur die suckable objects in seine Liste der Objekte tut. Siehe hier.

So naiv würde ich ja sagen, dass man erst alle Objekte in die Liste setzen sollte, nicht nur die, die suckable sind, sich dann das, dass am nächsten ist anschauen und wenn das suckable ist einsaugen, ansonsten einfach gar nichts machen, weil das dann im Weg ist.

Es könnte aber sein, dass das dann seltsam ist, wenn das am nächsten liegende Objekt sehr weit seitlich liegt, sodass es eigentlich effektiv nicht im Weg ist.

Das würde sich aber dann folgendermaßen beheben lassen, falls das ein Problem sein sollte:

  1. Erstelle eine Liste aller Objekte in dem Rechteck (nennen wir das mal objects)
  2. Erstelle eine zweite Liste aller suckables in objects. Nennen wir diese Liste einfach mal suckables.
  3. Finde mit dem existierenden Algorithmus das suckable, das am nächsten ist.
  4. Mache eine intersection der objects mit einer Geraden (oder einem Rechteck) zwischen dem Schwein und dem am nächsten liegenden suckable.
  5. Liegt nichts im Weg saugt das Schwein das Objekt ein, ansonsten eben nicht.
letsgamedev commented 6 years ago

Ist gefixed mit dem nächsten update