es wäre Hilfreich deinen Code für die Kollisionsabfrage zu sehen.
Ich würde das Zum Beispiel so machen:
a) Ich kenne die linke, obere Eckposition des Sprites
b) Ich kenne die Breite und Höhe des Sprites.
Normalerweise ist eine Kollision so:
Quelltext
1: 2: 3:
| if ((Sprite1.Left + 20) = Sprite2.Left) or (Sprite1.Top + 20) = Sprite2.Top) then Kollision := True; end; |
Ich weiß, das ist nur der Code dafür, wenn das erste Spriete zu nah an den linken oder oberen Rand vom zweiten Sprite kommt, verdeutlicht aber die Funktionsweise (hoffentlich

).
So, mit 10 Pixeln mehr (also bis zur Hälfte) sieht's so aus:
Quelltext
1: 2: 3:
| if ((Sprite1.Left + 10) = Sprite2.Left) or (Sprite1.Top + 10) = Sprite2.Top) then Kollision := True; end; |
Das ganz noch übertragen auf rechts und unten, würde es schon bringen.
Sprite1.Left ist klar. So. 20 dazu, ist der rechte Rand. Wenn der gleich dem linken Rand des 2. Sprites ist, gibt's 'ne Kollision.
Addiert man nur 10, wäre es die Mitte des ersten Sprites (also bleiben auf der anderen Seite auch noch 10). Ist die Mitte des Ersten über dem Rand des zweiten, ist das Kollision. Dabei ist drauf zu achten, daß wenn die Mitte des ersten über dem Rand des zweiten ist, genau die Hälfte des ersten Sprites auf dem zweiten Sprite liegt. Also genau das, was du haben willst.
Wie deine Kollisionsabfrage aussieht weiß ich nicht, daher kann ich die auch nicht entsprechend modifizieren.
P.S.: Die oben genannte Funktion ist nicht unbedingt richtig. Zum einen ist das '=' in der IF-Abfrage durch entsprechende '<' oder '>' zu ersetzen, weil es sonst nur klappt, wenn es Position exakt stimmt, nicht wenn's drüber ist. Außerdem ist der Code nicht getstet, es könnten also noch weitere Fehler drin sein. Im Prinzip sollte es aber so oder so ähnlich (halt Bereichsabfrage, nicht Positionsabfrage) funktionieren. Wichtig ist die 10, die abgezogen, bzw dazugezählt wird.
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk.