Hallo,
ich erzeuge ein Sprite, wo das Image zur Laufzeit ein Bitmap, was zwei Ellipsen enthält, zugewiesen bekommt:
Delphi-Quellcode:
function TRenderCore.InitializeBackground: Boolean;
var
Bmp: TBitmap;
W, H: Integer;
begin
try
with TImageSprite.Create(FSpriteEngine) do
begin
CanDoCollisions := TRUE;
X := 0;
Y := 0;
Z := -10000;
Bmp := TBitmap.Create;
try
W := FSpriteEngine.ViewPort.Right - 1;
H := FSpriteEngine.ViewPort.Bottom - 1;
Bmp.PixelFormat := pf24Bit;
Bmp.Width := W;
Bmp.Height := H;
Bmp.Canvas.Pen.Color := clBlack;
Bmp.Canvas.Pen.Width := 2;
Bmp.Canvas.Brush.Color := clWhite;
Bmp.Canvas.Brush.Style := bsClear;
Bmp.Canvas.Ellipse(10, 10, Bmp.Width - 10, Bmp.Height - 10);
Bmp.Canvas.Ellipse(40, 40, Bmp.Width - 40, Bmp.Height - 40);
Image := FAssetsImageList.Add('Background');
with Image do
begin
Texture.LoadFromGraphic(Bmp);
Restore;
end;
Width := W;
Height := H;
CollisionTester := FPixelCollisionTester;
finally
FreeAndNil(Bmp);
end;
end;
Result := TRUE;
except
Result := FALSE;
end;
end;
Das funktioniert soweit auch.
Aber das Problem: Wenn ein Objekt, was innerhalb des Kreises erzeugt wird, bei seiner Bewegung mit dem Begrenzungskreis kollidiert, wird DoCollision in diesem Fall nicht aufgerufen.
Ich denke das wird wohl daran liegen, dass Andorra in dem Fall nicht weiß, was als Kollisionsbereich gelten soll, oder?
Wie kann ich also erreichen, dass er auch für solche dynamisch erzeugten Texturen eine Kollisionserkennung durchführt? So als wenn ich TImageSprite.Image ein Objekt aus einer TAdImageList zuweisen würde?
Danke.