Hallo DPler,
ich befasse mich gerade mit den PhysicalSprites von Andorra 2D und da ist mir etwas seltsames aufgefallen:
Ich wollte einen Raum mit Wänden, die PhysicalBoxSprites sind, erstellen. Wenn ich diesen Sprites 0-Koordinaten zuweise (also x := 0), dann sind sie unsichtbar. Aber trotzdem finden eine Kollision statt
Mein Code:
Delphi-Quellcode:
type
TWall = class(TPhysicalBoxSprite);
TBottom = class(TWall);
TLeftWall = class(TWall);
TRightWall = class(TWall);
TTop = class(TWall);
implementation
procedure TForm1.FormCreate(Sender: TObject);
[...]
if AdDraw.Initialize then
begin
[...]
with TTop.Create(SpriteEngine) do
begin
Image := ImageList.Find('wall');
X := 0{ + 1};
Y := 0{ + 1};
Typ := ptStatic;
Width := 800;
InitializeShape;
end;
with TBottom.Create(SpriteEngine) do
begin
Image := ImageList.Find('wall');
X := 0{ + 1};
Y := 600 - Height;
Typ := ptStatic;
Width := 800;
InitializeShape;
end;
for i := 0 to 600 div 50 do
begin
with TLeftWall.Create(SpriteEngine) do
begin
Image := ImageList.Find('wall');
X := 0{ + 1};
Y := i * 50;
Typ := ptStatic;
InitializeShape;
end;
end;
for i := 0 to 600 div 50 do
begin
with TRightWall.Create(SpriteEngine) do
begin
Image := ImageList.Find('wall');
X := 780;
Y := i * 50;
Typ := ptStatic;
InitializeShape;
end;
end;
end;
end;
Wenn man den Sprites aber 1 statt 0 zuweist (in den geschweiften Klammern), sind sie wieder sichtbar. Allerdings ist dann ein 1-Pixel breiter Streifen oben und links zu sehen.
Und jetzt meine Frage
: Wieso ist das so?
PS: Ich habe die Demo Physics neu kompiliert, und dort wird der Boden auch nicht mehr angezeigt.
MFG, Benjamin