Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [DelphiX] Relative Figur-Bewegung (https://www.delphipraxis.net/68501-%5Bdelphix%5D-relative-figur-bewegung.html)

inherited 30. Apr 2006 17:18


[DelphiX] Relative Figur-Bewegung
 
Hi,
Nunja, hatte den ganzen kram in Mathe noch nichz, deshalb frag ich hier:
Ich habe (via DelphiX) ein Sprite mit den Positionsangaben x und y. Dieses ist (via Tastatur) drehbar.
Problem ist: Wie kriege ich es hin, dass, wenn ich beschleunige, sich das Objekt relativ zu seinem 'Kopf' vorwärts bewegt?

Ich habe folgenden Code, den ich abändern muss:
Delphi-Quellcode:
procedure TPlayerShip.DoMove(MoveCount: Integer);
var isMoved: Boolean;
begin
  inherited DoMove(MoveCount);
  isMoved:=false;

  If isUp in MainForm.DXInput1.States then
  begin
    vY := vY - 0.1;
    isMoved:=true;
  end;

  If isDown in MainForm.DXInput1.States then
  begin
    vY := vY + 0.1;
    isMoved:=true;
  end;

  If isLeft in MainForm.DXInput1.States then
  begin
    Angle:=Angle-1;
    isMoved:=true;
  end;

  If isRight in MainForm.DXInput1.States then
  begin
    Angle:=Angle+1;
    isMoved:=true;
  end;

  If isButton32 in MainForm.DXInput1.States then halt;

  PlayerShip.X:=PlayerShip.X+vx;  //was muss hier stehen?
  PlayerShip.Y:=playership.y+vy;  //und hier?
end;
Schon mal danke im voraus

So far,
inh3r1ted

(€dit: mein 222. Beitrag(!)^^)

Die Muhkuh 30. Apr 2006 17:23

Re: [DelphiX] Relative Figur-Bewegung
 
Moinchen,

Delphi-Quellcode:
procedure TAuto.DoMove(MoveCount: Integer);
begin
  inherited DoMove(MoveCount);

  if isUp in Form1.Input.States then
  begin
    X := X + cos256(Angle) * (MoveCount);
    Y := Y + sin256(Angle) * (MoveCount);
  end;

  if isDown in Form1.Input.States then
  begin
    X := X - cos256(Angle) * MoveCount;
    Y := Y - sin256(Angle) * MoveCount;
  end;

  if isLeft in Form1.Input.States then
    Angle := Angle - 1;

  if isRight in Form1.Input.States then
    Angle := Angle + 1;
end;
(Auszug aus meinem Source)

inherited 30. Apr 2006 17:40

Re: [DelphiX] Relative Figur-Bewegung
 
Hi, Danke erstmal für die rasche Antwort,
nur wie kann ich (siehe mein source), es so hinwurschteln, dass ich dabei immer noch mit der Beschleunigung arbeiten kann?

inherited 1. Mai 2006 18:43

Re: [DelphiX] Relative Figur-Bewegung
 
*PUSH*
Hab ich mich zu undeutlich ausgedrückt?

Die Muhkuh 1. Mai 2006 19:30

Re: [DelphiX] Relative Figur-Bewegung
 
Hi inherited,

schau mal hier.

pacman1986 1. Mai 2006 19:58

Re: [DelphiX] Relative Figur-Bewegung
 
Teste das mal sollte funktionieren
Delphi-Quellcode:
 x := round(sin(Angle/180*pi)*Strecke)+x;
 y := round(cos(Angle/180*pi)*Strecke)+y;
bin mir aber nicht sicher ist ne sache die ich rausgekrammt habe

edit :
ps : wenn du angle benutzt funktioniert die collision nicht mehr richtig glaube ich

inherited 2. Mai 2006 14:17

Re: [DelphiX] Relative Figur-Bewegung
 
Hi,

erstmal DANKE.
Habs jetzt folgendermaßen gelößt:
Delphi-Quellcode:
  vY := vY - 0.1 * cos256(Angle+64);
  vX := vX + 0.1 * sin256(Angle+64);
wobei vx= geschwindigkeitsveränderung x ist


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz