Hi, tatsächlich hast du Recht, ich weiß auch nicht, was da vorhin falsch war.
Allerdings, bei folgender DoMove procedure
Delphi-Quellcode:
procedure TEinheit.DoMove(TimeGap: Double);
var A, B, AB, BB: Integer;
begin
inherited DoMove(TimeGap);
A := round(X);
B := round(X+200);
AB := round(Y);
BB := round(Y+200);
if (Aim.X in [A..B]) and (Aim.Y in [AB..BB]) then // er bleibt stehen
begin
AnimActive := false;
AnimLoop := false;
FXSpeed := 0;
FYSpeed := 0;
case FDirection of //das kommt später
dirS: AnimPos := 64;
dirSW: ;
dirW: ;
dirNW: ;
dirN: ;
dirNE: ;
dirE: ;
dirSE: ;
end;
end
else // er läuft weiter
begin
X := X + FXSpeed * TimeGap;
Y := Y + FYSpeed * TimeGap;
end;
Collision;
end;
bleibt die Figur niemals stehen...
Weiters durchläuft er auch ein Haus bei folgender DoCollision:
Delphi-Quellcode:
procedure TEinheit.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
inherited;
if (Sprite is THaus) then
begin
AnimActive := false;
AnimLoop := false;
FXSpeed := 0;
FYSpeed := 0;
case FDirection of
dirS: AnimPos := 64;
dirSW: ;
dirW: ;
dirNW: ;
dirN: ;
dirNE: ;
dirE: ;
dirSE: ;
end;
end;
end;