Einzelnen Beitrag anzeigen

Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#19

Neues Problem

  Alt 4. Aug 2010, 09:17
Delphi-Quellcode:
                  if Energie > 0 then begin
                     X := X + (XSpeed * TimeGap * Energie * 10);
                     Y := Y + (YSpeed * TimeGap * Energie * 10);
                     //Energie neu berechnen, ACHTUNG bei der Wurzel (wurzel aus -X)
                       if XSpeed * YSpeed <> 0 then Energie := Energie - sqrt(abs(((Xspeed*TimeGap)*(XSpeed*TimeGap)))+abs(((YSpeed*TimeGap)+(YSpeed*TimeGap))))
                       else if (XSpeed=0) and (YSpeed <> 0)then Energie := Energie - abs(YSpeed*TimeGap)
                       else if (YSpeed=0) and (XSpeed <> 0)then Energie := Energie - abs(XSpeed*TimeGap);
Energie ist die Laugenergie der Kugel, die anschließend verringert wird. Die Kugel soll ja nicht ruckartig 100Pixel nach rechts springen, sondern es soll ja eine flüssige Bewegung generiert werden. XSpeed und YSpeed rechne ich über die Vektorenrechnung aus. Irgendwie muss ich aber einen Fehler in dem geposteten Text haben. Ist XSPeed*YSpeed<>0, dann ist der Laufweg soweit ich das beurteilen kann, immer derselbe (oder täusche ich mich?). Ist jedoch YSpeed oder XSpeed = 0, dann läuft die Kugel sehr sehr weit, woraus ich schließe, dass ich entweder im ersten Fall zu viel Energie abziehe oder im zweiten Fall zu wenig. FÜr mich sind beide Rechnungen jedoch schlüssig, schließlich wird im ersten Teil eine Diagonale durchschritten, die ich mit Pythagoras ausrechne und im zweiten Fall kann ich ja den direkten Weg abziehen.
Oder liege ich falsch?
  Mit Zitat antworten Zitat