Ich kann mich auch irren (habe den Source noch nicht heruntergeladen) ,
aber wenn Flist vom Typ Array of TSprite ist,dann rufst Du immer wieder die gleiche Procedure auf ohne
CollisionDone zu setzen.Code gekürzt,zur Übersicht.
Delphi-Quellcode:
procedure TSprite.Collision2;
begin
if (Self<>FEngine.FCollisionSprite) and
OverlapRect(FEngine.FCollisionRect,BoundsRect) and
TestCollision(FEngine.FCollisionSprite) then
begin
if FEngine.FCollisionSprite.Deaded or (not FEngine.FCollisionSprite.CanDoCollisions) then //<-
FEngine.CollisionDone := true; //<-
if not FEngine.FCollisionDone then //<-
begin
for i := 0 to FList.Count - 1 do
begin
FList[i].Collision2; //<-
//if NOT FList[i] =FEngine.FCollisionSprite.Deaded or (not FEngine.FCollisionSprite.CanDoCollisions) then Endlos-Loop
if FEngine.CollisionDone then
begin
break;
end;