-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
26. Feb 2005
Naja, passen tuts schon, da es ja einen anderen Anfang hatte. Ich würd sagen, wir lassen dass nun. Es funktioniert ja.
Und der Quellcode von sniper_w hat sehr geholfen, da es die Lösung war
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
26. Feb 2005
Das versteh ich jetzt nicht. Zwar hab ich das Problem jetzt gelöst und es funktioniert einwandfrei, aber wieso *200. 200 Soll nicht der Drehwinkel werden, sondern die Position. Wenn ich nichts hinschreib, dann is der Spieler ja auf (0 / 0). Mit +200 ist er auf (200 / 200)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Also, ich weiss nun, für was das 256 ist. Eine Umdrehung hat nicht 360° sondern 256°
Somit is klar, wiesos nicht funktioniert. Nun nehm ich halt den Winkel, den ich rausbekomme mal 0,711.
0,711 = 256 / 360 /-> Das Verhältnis halt
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Also:
sin256, cos256 hab ich beim suchen gefunden (Sprites drehen). Leider kA was die machn.
Der Spieler soll immer in die Richtung der Maus schaun.
Das ganze ist DelphiX, somit kann man mit Angle den Winkel des Spielers festlegen.
Der Winkel wird ja richtig errechnet. Nur das darstellen funktioniert nicht so ganz. Siehe EXE-File
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Danke, hat sehr geholfen. Wusste schon, worans liegt. Nämlich an den 360°, nicht 90°.
Jetzt hab ich nur noch ein Problem. Der richtige Winkel wird angezeigt, doch das Bild dreht sich nicht richtig. Hier ist der Code:
if (Aim.x-Player.X <>0) then
begin
Player.Angle := trunc(ArcTan((Aim.y-Player.Y)/(Aim.x-Player.X)) * 180 / pi);
if (Player.Angle<0)and(Aim.x-Player.X<0) then...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Naja, weil das der COde ist. Somit schaut der Spieler in die Richtung, wo die Maus ist. Sollte er jedenfalls. Ich poste mal den Code, wird aber auch nicht weiterhelfen.
Procedure TPlayer.domove(MoveCount: Integer);
begin
Angle:=Round(arctan((Aim.Y-Player.Y)/(Aim.X-Player.X)) * 180/pi);
inherited DoMove(MoveCount);
X := Cos256(Angle)+200;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Es funktioniert trozdem nicht.
Ich geb mal die EXE-File dazu. Dann sieht man den Fehler besser.
Der Code für das lautet nämlich so:
Angle:=trunc((arctan((Aim.Y-Player.Y)/(Aim.X-Player.X)) * 180/pi));
Aim.Y-Player.Y ergibt die Gegenkathete
Aim.X-Player.X ergibt die Ankathete
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Gibt es bei Arctan(x) einen Unterschied oder folgt darauf auch *180 / pi??
Komme irgendwie nicht so richtig hin, da ich will, dass ein Sprite immer dahin schaut, wo die Maus ist.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Puh, danke für die schnellen Antworten. :shock:
Es stimmt, is natürlich Tan, hab mich verschaut. Und die Formel geht nun. :P
-
Forum: Object-Pascal / Delphi-Language
Delphi
by ISAS,
25. Feb 2005
Habe hier ein rechtwinkeliges Dreieck, bei dem ich die Gegenkathete und die Ankathete gegeben habe. Das wäre nun Cosinus. Jetzt lautet die Formel: cos(Alpha)=Geg/Ank Alles leicht und gut, aber wie kann ich nun Alpha in Delphi errechnen.
Habe das gefunden: function RadToGrad(Radians: Extended): Extended; Do gibt es bei mir kein RadToGrad. Zwar steht es in der Hilfe drinnen, aber es is nicht...