Мой общий подход к быстрому прыжку состоит в том, чтобы использовать значение спуска, чтобы сделать движение немного более плавным.Сейчас я не могу посмотреть ни один код / xna, но моей первой мыслью было бы что-то вроде ниже.
Определение переменных:
float bleedOff = 1.0f;
bool jumping = false;
Обновление ввода:
if(input.JumpKey())
{
jumping = true;
}
Прыжковое обновление:
if(jumping)
{
//Modify our y value based on a bleedoff
//Eventually this value will be minus so we will start falling.
position.Y += bleedOff;
bleedOff -= 0.03f;
//We should probably stop falling at some point, preferably when we reach the ground.
if(position.Y <= ground.Y)
{
jumping = false;
}
}
bleedOff = MathHelper.Clamp(bleedOff, -1f, 1f);
Очевидно, значение bleedOff следует вычислять с немного большей случайностью, возможно, используя значение силы тяжести, чтобы оно выглядело правильно, но это создаст иллюзию ускорения / замедленияс прыжком, как они поднимаются и опускаются.
Очень быстрый подъем с самого начала, замедление и, в конечном итоге, снова падение, и это ускорится.Зажим в нижней части будет вашей максимальной вертикальной скоростью.
Я просто записал это на макушке на работе, поэтому извиняюсь, если это не совсем то, что вы ищете, но я попытался сделать это немного более общим,Надеюсь, это поможет.