Herzlich willkommen in der Delphi-PRAXiS, Myribo.
Wenn Speed in pixel/sec angegeben wird, dann sollte dein Code wohl so aussehen:
Delphi-Quellcode:
const
DEG_TURN = 3;
var
newAngle, dist, dX, dY: Double;
begin
newAngle := MyChar.Angle;
if IsKeyDown('D') then
newAngle := newAngle - DEG_TURN;
if IsKeyDown('A') then
newAngle := newAngle + DEG_TURN;
newangle := (newAngle + 360) mod 360;
if IsKeyDown('W') then
begin
dist := MyChar.Speed * elapsedTime; // konstant?
dX := dist * cos(DegToRad(newAngle));
dY := dist * sin(DegToRad(newAngle));
// jetzt noch die spielfigur an die neuen koordinaten verfrachten...
// ...
end;
MyChar.Angle := newAngle;
end;
Getippt und nicht getestet.
Freundliche Grüße vom marabu