AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[DelphiX] Relative Figur-Bewegung

Ein Thema von inherited · begonnen am 30. Apr 2006 · letzter Beitrag vom 2. Mai 2006
Antwort Antwort
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#1

[DelphiX] Relative Figur-Bewegung

  Alt 30. Apr 2006, 18:18
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(!)^^)
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: [DelphiX] Relative Figur-Bewegung

  Alt 30. Apr 2006, 18:23
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)
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [DelphiX] Relative Figur-Bewegung

  Alt 30. Apr 2006, 18:40
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?
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [DelphiX] Relative Figur-Bewegung

  Alt 1. Mai 2006, 19:43
*PUSH*
Hab ich mich zu undeutlich ausgedrückt?
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: [DelphiX] Relative Figur-Bewegung

  Alt 1. Mai 2006, 20:30
Hi inherited,

schau mal hier.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#6

Re: [DelphiX] Relative Figur-Bewegung

  Alt 1. Mai 2006, 20:58
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
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [DelphiX] Relative Figur-Bewegung

  Alt 2. Mai 2006, 15:17
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
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 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