Thema: Delphi Kollisionsabfrage

Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#2

Re: Kollisionsabfrage

  Alt 10. Jul 2004, 13:42
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
  Mit Zitat antworten Zitat