found some values for tux' flapping speed that feel okay when running (still a little...
authorMarek Moeckel <wansti@gmx.de>
Fri, 8 Oct 2004 23:16:06 +0000 (23:16 +0000)
committerMarek Moeckel <wansti@gmx.de>
Fri, 8 Oct 2004 23:16:06 +0000 (23:16 +0000)
Problem is, it's pure coincidence that they fit, since they don't depend on any other speed setting. However, this formula might serve as a basis on which the optimum flapping speed could be calculated.

SVN-Revision: 1999

src/player.cpp

index b28dee4..0608ad2 100644 (file)
@@ -593,18 +593,20 @@ Player::handle_vertical_input()
          jumping = true;
          flapping = true;
          float iv = physic.get_velocity_x(); //flapping speed depends on initial velocity
-         float fv = 1.2;                     //fixed velocity that is reached when flapping is done
+         //float fv = 1.2;                     //fixed velocity that is reached when flapping is done
          float cv = 0;                       //current velocity
-         if (iv < 0) {fv *= (-1);}           //make fv negative or positive depending on direction of iv
+         //if (iv < 0) {fv *= (-1);}           //make fv negative or positive depending on direction of iv
          if (flapping_timer.get_gone() <= TUX_FLAPPING_TIME)
             {
-               //TODO: Tux currently slows down too fast; fix that.
+               //TODO: Values okay when running, but that's pure coincidence; they don't depend on iv anymore.
                if (iv == 0) {cv = 0;}
-               else {cv = (iv-((iv-fv)*(float)flapping_timer.get_gone()/TUX_FLAPPING_TIME));}
+               //else {cv = (iv-((iv-fv)*(float)flapping_timer.get_gone()/TUX_FLAPPING_TIME));}
+               else {cv = (sqrt(1000-(float)flapping_timer.get_gone()))/10;}
                //Handle change of direction while flapping
                if (((dir == LEFT) && (cv > 0)) || (dir == RIGHT) && (cv < 0)) {cv *= (-1);}
+               //std::cout << cv << std::endl;
                physic.set_velocity_x(cv);
-               physic.set_velocity_y((float)flapping_timer.get_gone()/700);
+               physic.set_velocity_y((float)flapping_timer.get_gone()/800);
             }
      }