Einzelnen Beitrag anzeigen

Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#6

Re: Bild rotieren / bewegen (DelphiX)

  Alt 3. Jan 2005, 20:38
Zitat von Oxmyx:
Zitat von Airblader:
Naja - aber wie kann ich dann das Bild auch entlang dieser Achse fahren lassen?
Na einfach mit ein bisschen Trigonometrie.

x := x + (sin(winkel) * geschwindigkeit);
y := y + (cos(winkel) * geschwindigkeit);
Hm...es fährt...aber Kreuz und Quer.
Vielleicht hilft es, wenn ich mal meinen Code poste:

Delphi-Quellcode:
TPlayer = record // Player
  Pos: TPoint; // Position
  Winkel: Integer; // Richtung
  Geschwindigkeit: Real; // Geschwindigkeit
end;

[...]

Player: TPlayer;
Das ist meine Deklarierung des Records.

Im OnCreate mach ich folgende Startwerte:

Delphi-Quellcode:
Player.Pos.X := 200;
Player.Pos.Y := 550;
Player.Winkel := 0;
Player.Geschwindigkeit := 0.0;
Und meine OnTimer prozedur...hm...ich weiss nicht, was da für evtl. Fehlerbehebung relevant wäre, von daher poste ich sie mal ganz:

Delphi-Quellcode:
if not Form1.DXDraw1.CanDraw then
   Exit;


if (GetAsyncKeyState(VK_LEFT) < 0) then
   Dec(Player.Winkel,10);
if (GetAsyncKeyState(VK_RIGHT) < 0) then
   Inc(Player.Winkel,10);
if (GetAsyncKeyState(VK_UP) < 0) then
   Player.Geschwindigkeit := 2;
if (GetAsyncKeyState(VK_DOWN) < 0) then
   Player.Geschwindigkeit := 0;

Player.Pos.X := Round(Player.Pos.X + (Sin(Player.Winkel) * Player.Geschwindigkeit));
Player.Pos.Y := Round(Player.Pos.Y + (Cos(Player.Winkel) * Player.Geschwindigkeit));


Form1.DXDraw1.Surface.Fill(0);

Form1.DXImageList1.Items.Find('car').DrawRotate(Form1.DXDraw1.Surface, Player.Pos.X, Player.Pos.Y, Form1.DXImageList1.Items.Find('car').Width, Form1.DXImageList1.Items
        .Find('car').Height, 0, 0.5, 0.5, Player.Winkel );

Form1.DXDraw1.Flip;
Ich vermute das Problem in der DrawRotate-Funktion.

ich bin ehrlich und gestehe: Ich weiss nicht wofür die 0.5 stehen, waren einfach testwerte (die funktiondsdeklarierung sagt mir CenterX und CenterY)

air

Edit: Ah, es ist der Drehpunkt...aber auf was muss ich ihn setzn?
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat