halli hallo liebe delphi community =)
zunächst entschuldigt bitte, falls dieses thema schon einmal behandelt wurde - ich habe bereits erfolglos gesucht..
nun aber zu meinem problem, bzw. zu meiner frage:
seit einiger zeit beschäftige ich mich mit delphi und schreibe momentan ein kleines 2d spiel (ansicht von oben).
ich habe eine kleine spielfigur in einem TRotateImage (drehbares bild, wie der name schon sagt).
ein timer läuft nebenbei (ja - geht bestimmt auch eleganter) und überprüft jedesmal, ob die tasten a oder d gedrückt sind.
wenn ja, wird der winkel der figur verändert (sie dreht sich, W A S D-steuerung). so nun möchte ich, dass sich die figur beim drücken der w und s taste natürlich auch bewegt. und zwar in genau die richtung, in die sie gerade blickt, bzw. gedreht ist.
ich habe also den winkel, bzw. die steigung und die geschwindigkeit (ich dachte an px/timerdurchlauf) der figur und möchte nun die neuen koordinaten berechnen.
kann mir vielleicht jemand von euch sagen, wie ich das machen kann??
ich weiß leider überhaupt nicht, wie ich meine versuche weiterführen kann, bzw. ob das überhaupt der richtige ansatz ist.
hier hattte ich mal was versucht:
Code:
var newangle,m,a,dX,dY,alpha,sinA:Double;
begin
newangle:=MyChar.Angle;
if IsKeyDown('D') then
begin
newangle:=MyChar.Angle-3;
end;
if IsKeyDown('A') then
begin
newangle:=MyChar.Angle+3;
end;
if newangle>360 then newangle:=newangle-360
else if newangle<0 then newangle:=newangle+360;
if IsKeyDown('W') AND (newangle<>90) AND (newangle<>270) then
begin
m:=tan(DegToRad(newangle));
a:=MyChar.Speed;
alpha:=180-90-newangle;
sinA:=sin(alpha);
dX:=sinA*a;
dY:=dX*m;
dX:=dX*-1;
end;
// jetzt noch die spielfigur an die neuen koordinaten verfrachten...
im anhang befindet sich zwei screenshots von dem spiel, der zweite mit winkel"erklärung" (im code wäre das die variable newangle). das rote ding da mit dem kreis soll ein mensch von oben sein...
soo ich hoffe ich hab nix vergessen.
ich wär euch richtig dankbar, wenn ihr mir hier helfen könntet!
vielen dank schonmal...
LG
Myribo =)