Hi.
Berechne einfach zuerst den Abstand zum nächsten Hindernis, dann brauchst du keine Subiteration mehr:
Delphi-Quellcode:
const
TDirection = (dirNone, dirRight, dirUp, dirLeft, dirDown);
begin
distance := Map.GetDistance(Player, dirDown);
with Player do
setPosY(getPosY + Min(15 * timefactor, distance));
end;
Grüße vom marabu