Wenn eine Liste der Hinderniss vorliegt, brauchst du nur die Rechtecke auf Überschneidung zu prüfen.
z.B. so:
Delphi-Quellcode:
var
Hindernisse: TObjectList;
{...}
Hindernisse := TObjectList.Create;
Hindernisse.OwnsObjects := False;
Hindernisse.Add(ImageHindernis1);
{...}
function IsKollision(APferdImage: TImage): Boolean;
var
Hinderniss: TObject;
Rx, R1: TRect;
begin
R1 := APferdImage.BoundsRect;
for i := 0 to Hindernisse.Count - 1 do
begin
Hinderniss := Hindernisse[i];
if Hinderniss is TImage then
begin
Result := IntersectRect(Rx, R1, TImage(Hinderniss).BoundsRect);
if Result then
Exit;
end;
end;
Result := False;
end;
Eine Kollisionsprüfung auf Pixelebene ist aber wesentlich aufwendiger.
Die
VCL ist einfach nicht für Spiele gedacht.
Auf
Andorra hat Matze ja bereits hingewiesen.