danke nochmals für deine antwort!
ich habs jetzt anders gelöst. und zwar kann man auch einfach mit hilfe eines rechtwinkligen dreiecks die gewollte bewegung ausrechnen und diese anschliessend zur momentanen bewegung addieren!
Delphi-Quellcode:
max_speed : Integer = 20;
moveX, moveY : Extended;
speed : Extended;
drive_angle, Angle : Integer;
if(isUp in Main.DXInput.States) then
begin
if(speed < 1) then
begin
speed := speed + 0.25;
end;
beschleunigung := 1;
newx := beschleunigung * cos256(drive_angle);
newy := -beschleunigung * sin256(drive_angle);
if(movex <= max_speed) and (movey <= max_speed) and (movex >= -max_speed) and (movey >= -max_speed) then
begin
movex := movex + newx;
movey := movey + newy;
end;
end;
x := x + movex*speed;
y := y + movey*speed;
das funktioniert ganz gut eigentlich! hab da jetzt noch ein paar optimierungen drin und dann klappt alles schon sehr gut!
danke für die Hilfe!!
greetz