Hi!
Ich würde das timer-Intervall nicht ändern, sondern immer bei 13 ms lassen (ca. 75 Hz). Dann kann man große Sprünge auch nicht wahrnehmen, wenn es sie denn geben sollte.
Zur Kollisionsabfrage:
Deine OnTimer-Procedure sieht wahrscheinlich ungefähr so aus:
Delphi-Quellcode:
Ball.Left := Ball.Left + Vektor;
Kollisionsabfrage;
wobei der Vektor dann die die Geschwindigkeit ist. Dabei fliegt der Ball aber, wie bereits von dir erwähnt evtl. direkt ins Objekt hinein. Mach's doch stattdessen so:
Delphi-Quellcode:
For i := 1 to Vektor do begin
Ball.Left := Ball Left + 1;
Kollisionsabfrage;
If Kollision then Break;
end;
Dann fliegt der Ball nämlich nur so lange, bis es eine Kollision gibt.