Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kollisionsabfrage (https://www.delphipraxis.net/25684-kollisionsabfrage.html)

devnull 10. Jul 2004 13:03


Kollisionsabfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
wie kann man am Besten die Kollision des Raumschiffs mit einem dynamischen Bild (Planeten) auf der Paintbox feststellen?
Ich möchte verhindern, dass das Raumschiff durch die Planeten fliegen kann, jedoch bestimmen, welcher Planet in der unmittelbaren Nähe ist...

-> Bild siehe Anhang

mfg
devnull

tommie-lie 10. Jul 2004 13:42

Re: Kollisionsabfrage
 
Wenn die Planeten und das Raumschiff auch eckig sein dürfen:
Delphi-Quellcode:
// -----------------------
function RectIntersect(A, B: TRect; Offset: Integer): Boolean;
begin
  result := not((A.Right + Offset <= B.Left)  or
                (A.Bottom + Offset <= B.Top)   or
                (A.Top - Offset   >= B.Bottom) or
                (A.Left - Offset  >= B.Right));
end;
// -----------------------

for i := 0 to Planets.Count - 1 do
begin
  if RectIntersect(
    Rect(Planets[i].X, Planets[i].Y, Planets[i].X + Planets[i].Width, Planets[i].Y + Planets[i].Height),
    Rect(Starship.X, Starship.Y, Starship.X + Starship.Width, Starship.Y + Starship.Height),
    , 0)
  then
    // Kollision
end;
Die einzelnen Daten hängen natürlich davon ab, wie du die Position und Maße der Objekte speicherst. Ich bin hier von Phantasieklassen ausgegangen, dürfte aber eigentlich selbsterklärend sein ;-)

devnull 10. Jul 2004 14:08

Re: Kollisionsabfrage
 
Danke, jetzt funzt alles :bouncing4: :bouncing4:

sakura 10. Jul 2004 14:14

Re: Kollisionsabfrage
 
@devnull: Mache das Bild bitte als Anhang.

Danke,
...:cat:...

DP-Maintenance 10. Jul 2004 18:26

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Sonstige Fragen zu Delphi" nach "Multimedia" verschoben.

devnull 10. Jul 2004 21:13

Re: Kollisionsabfrage
 
@sakura: Bild ist nun im Anhang


[EDIT]Neue Frage, neue Eintrag[/EDIT]

mfg
devnull


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz