Hi zusammen!
Ich weiß, das Thema hatten wir schon oft, aber mir helfen die Suchergebnise nicht.
Folgender Code wird ausgelöst, wenn eine Kollision stattfindet (2D):
Delphi-Quellcode:
TAnimation = class(TImageSprite)
public
procedure DoMove(MoveCount: Integer); override;
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
end;
...
procedure TAnimation.DoCollision(Sprite: TSprite; var Done: Boolean);
var InCollision: boolean;
begin
//Bewegung nach links (ich müsste noch die Y Koorinaten überprüfen)
if (X < TGegenstand(Sprite).X + Gegenstand.Width) then
cangoleft := false;
end;
Hier möchte ich abfragen, ob sich eine Figur in eine bestimmte Richtung bewegen kann, in dem Beispiel, nach links.
So überprüfe ich auch die anderen benachbarten Koorinaten, das Problem ist nur, dass diese Prozedur ausgelöst wird, wenn man sich in einem Gegenstand befindet, und nicht, wenn man danaben ist.
Hier ist eine Kollisionsabfrage beschrieben, die mich jedoch nicht weiter bringt.
Ich habe schon versucht, die Kollisions-Prozedur einfach neu zu schreiben und keine von TAnimation zu nehmen, doch das hat nicht geklappt, da, da z.B. "Sprite" nicht bekannt ist.
Kann mir da evtl jemand behilflich sein?