Zitat von
igel457:
Diese Fälle musst du bei der Kollisionsürpfung eben alle abfangen - da kann dir Andorra 2D nicht helfen. In meinen Spielen habe ich das folgendermaßen gemacht:
Delphi-Quellcode:
TCollisionEdge = (ceLeft, ceTop, ceRight, ceBottom);
TCollisionEdges = set of TCollisionEdge;
procedure DoMove(timegap:double);
begin
CollisionEdges := [];
Collision;
if ceTop in CollisionEdges then ...
end;
procedure DoCollision(Sprite:TSprite; var Done:boolean);
begin
wenn kollision dann
wenn oben then CollisionEdges := CollisionEdges + [ceTop];
wenn unten then CollisionEdges := CollisionEdges + [ceBottom];
.
.
.
end;
Wird denn "DoCollision" mit allen Sprites gemacht?
Also wenn wir um das Männchen 8 Felder haben, wird dann DoCollision 9x aufgerufen?
Und wann wird eigentlich DoMove aufgerufen?
Bestimmt, wenn man .Move aufruft, aber was bewirkt das? Bisher habe ich das (glaub ich
) nur bei Animationen gesehen?
Ich verstehe das irgendwie nicht so richtig
Der Spieler bewegt sich (
DoMove) wird aufgerufen.
Es werden die
CollisionEdges resetet.
Dann wird
Collision; aufgerufen.
Und in
DoCollision wird geguckt ob Kollision mit dem Sprite.
Aber wie komme ich jetzt auf "oben"? Oder "unten"?