Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: "Kollidieren" von drei Objekten verhindern

  Alt 27. Dez 2018, 16:34
Hallo,
Augenkrebs

Rücke bitte richtig ein und benutze (hier) immer begin end
Ab Kiste k4 wirst Du mächtig Probleme bekommen,
wenn Du nicht wie vorgeschlagen alle Kisten in eine Liste packst.

Du musst dann nur eine Prüfung auf 2 Kisten machen,
benutzt aber die Schleife.

Ausserdem würde ich mit einer virtuellen Kiste arbeiten,
die die Ziel-Position der bewegten Kiste enthält, als ob es keine anderen Kisten gibt.

k_Ziel:= k1; // Daten von Kiste 1 holen
K_Ziel.Top:= K_Ziel.Top-50;

Jetzt k_Ziel mit kx (k2-k10) prüfen, ob es eine Überlappung gibt.

Bei der Überlappung würde ich nicht auf Überlappung, sondern auf Nicht-Überlappung testen.
Das ist einfacher, Bsp:

Frage: Liegt ky von der Höhe überlappend auf kx?
ky.Top<kx.Top+kx.Height

Und das gleiche für links, rechts, oben unten.
Am besten mal auf Quadrat-Papier aufmalen oder 2 Kisten ausschneiden und übereinanderlegen.
Heiko

Geändert von hoika (27. Dez 2018 um 16:39 Uhr)
  Mit Zitat antworten Zitat