Hallo, nach viel googlen finde ich einfach nicht, wonach ich suche. Selbst kann ich es nicht beantworten, da ich Winkelfunktionen(sin, cos, tan, etc.) in der Schule noch nicht gelernt habe.
Ich habe einen TPoint, nennen wir ihn P1.
Dann klicke ich mit der Maus:
Delphi-Quellcode:
begin
...
GetCursorPos(p2);
p2 := ScreenToClient(p2);
SetDir(round(Tan((P1.Y - P2.Y) / (P1.X - P2.X))));
...
end;
SetDir ist folgendes:
Delphi-Quellcode:
procedure TEinheit.SetDir(ADirection: Integer);
var
w:integer;
begin
//Reset the speed variables
FYSpeed := 0;
FXSpeed := 0;
w := ADirection;
//Set the X and the Y speed
FXSpeed := round(cos(PI/180*w)*Speed);
FYSpeed := round(sin(PI/180*w)*Speed);
AnimLoop := true;
AnimActive := true;
end;
Vielleicht inzwischen erraten, es ist ein Andorra 2D Projekt
die DoMove procedure von TEinheit ist folgende:
Delphi-Quellcode:
procedure TEinheit.DoMove(TimeGap: Double);
begin
inherited DoMove(TimeGap);
X := X + FXSpeed * TimeGap;
Y := Y + FYSpeed * TimeGap;
end;
Tja, egal wohin ich klicke, er läuft immer nach rechts(die Animation soll ja nach rechts laufen, aber der Sprite soll dahin laufen, wohin ich klicke...)
Info: Da ich mich ja mit Winkelfunktionen nicht auskenne, habe ich mir die Sinus Cosinus und ArcTangens dinger aus Demos rausgeschnappt....