![]() |
[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:
Schon mal danke im voraus
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; So far, inh3r1ted (€dit: mein 222. Beitrag(!)^^) |
Re: [DelphiX] Relative Figur-Bewegung
Moinchen,
Delphi-Quellcode:
(Auszug aus meinem Source)
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; |
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? |
Re: [DelphiX] Relative Figur-Bewegung
*PUSH*
Hab ich mich zu undeutlich ausgedrückt? |
Re: [DelphiX] Relative Figur-Bewegung
|
Re: [DelphiX] Relative Figur-Bewegung
Teste das mal sollte funktionieren
Delphi-Quellcode:
bin mir aber nicht sicher ist ne sache die ich rausgekrammt habe
x := round(sin(Angle/180*pi)*Strecke)+x;
y := round(cos(Angle/180*pi)*Strecke)+y; edit : ps : wenn du angle benutzt funktioniert die collision nicht mehr richtig glaube ich |
Re: [DelphiX] Relative Figur-Bewegung
Hi,
erstmal DANKE. Habs jetzt folgendermaßen gelößt:
Delphi-Quellcode:
wobei vx= geschwindigkeitsveränderung x ist
vY := vY - 0.1 * cos256(Angle+64);
vX := vX + 0.1 * sin256(Angle+64); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz