Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.09.2011, 18:33

Leveleditor-Design Frage

Guten Abend,

bin gerade dabei mein Leveleditor zu bauen und habe bis jetzt die Objektauswahl mit den Pfeiltasten gemacht.

Nun will ich die Objekte mit der Maus wählen und würde gerne wissen, ob diese Idee "eine Gute" ist:

Ich klicke mit der Maus irgendwo in die Fläche und schaue, mit welchen Objekten (deren Boundingbox) die Maus "kollidiert".
Die Liste an Objekten geb ich zurück.

Meine Frage ist, wie kann ich rausfinden welches Objekt oben liegt, ich habe die Objekte in meiner Liste nicht nach z sortiert.

Oder gibts da ne bessere, einfacherere Lösung ?

lg

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

22.09.2011, 18:43

Na was nun besser oder schlechter ist musst du in erster Linie selbst bestimmen. Du willst den Editor ja vermutlich haben, damit er dir Arbeit abnimmt. Also setze es so um, wie es dir am besten gefällt. Die Entscheidung kann dir keiner abnehmen. Was du genau willst ist mir grad nicht ganz klar. Du hast Objekte, die übereinander liegen können, wenn ich dich richtig verstehe. Und du willst nun das oberste Objekt haben. Dann wäre deine Idee mit dem sortieren doch schon ganz gut. Das sind so Probleme um die man sich streiten kann. Deine Idee sollte das machen, was du willst und von der Performance stellt sich hier auch kein Problem dar, von daher setz es einfach so um. Zu oft hängt man sich mit so Kleinkram auf und verliert dann das eigentliche aus den Augen. Setz es ruhig erst mal so um.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

22.09.2011, 18:47

Bei der "Kollisionstestung" wirst du wohl den Punkt, wo die Maus "kollidiert" rausbekommen. Wenn du den kennst, dann kannst du deine Objekte auch entsprechend sortieren.

4

22.09.2011, 18:52

Versteh ich nicht.

Mit meiner Theorie gibts ja drei Möglichkeiten:

Meine Liste ist leer ( an Maus.x, Maus.y ist kein Objekt ) -> fertig
Meine Liste hat ein Objekt -> fertig
Meine Liste hat n>1 Objekte -> Welches liegt oben ? Also z.B. zwei, drei oder fünfzehn Rechtecke überlappen und auf diese Überlappung klicke ich.

Wie lös ich Punkt 3, dein Satz versteh ich irgendwie net :<

@Schorsch: ups, dein Beitrag hab ich eben gar nicht gelesen. Ok das wäre ne Möglichkeit. Aber hmmm.... trotzdem würde ich gerne wissen wie man sowas am elegantesten löst :(

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

22.09.2011, 18:59

Wie lös ich Punkt 3, dein Satz versteh ich irgendwie net :<

Versuch mal, zu definieren, was genau "liegt oben" bedeuten soll...

6

22.09.2011, 19:00

liegt oben:

Zwei Rechteecke überlappen, eins ist oben, eins ist unten. Also bei der Überlappung sieht man ein Rechteck komplett, dieses ist oben.

valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

7

22.09.2011, 19:06

Wie sind denn deine Objekte geordnet? Bzw. hast du verschiedene Ebenen?
Wenn du keine Ebenen hast, und die Objekte einfach übereinander aber nicht untereinander setzen kannst, kannst du ja immer das letzte Objekt aus der Liste nehmen, welches dann dem obersten entsprechen sollte...
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

8

22.09.2011, 19:06

Doch so simpel :/

Auf die Idee bin ich gar nicht gekommen, danke =)

lg

Werbeanzeige