Я думаю, что у вас есть правильные общие идеи, но многое о вашем коде сбивает с толку.
Мои проблемы в основном связаны с переменной скоростью - мне кажется, что ваш мяч ускоряется переменнымискорость и ускорение до достижения максимальной скорости.Противодействие этому - гравитация, тянущая (ускоряющая) шар вниз.
Теперь, как правило, это не тот «прыжок», как вы его описываете.Поэтому для меня, когда игрок нажимает «прыгать», вы должны установить YVel на jspeed и просто позволить гравитационной части уравнения вернуть его вниз - то есть, если вы удалили код:
if(mY + mVelY < Panel.mHeight){ //0,0 is top-left
mVelY += (speed);
}
Тогда этоненадолго поднялся бы, а затем потерял импульс к гравитации и вернулся вниз - где, как этот код выше, продолжает толкать его вверх, пока он не достигнет вершины, и как только он начнет опускаться, толкнет его обратно вверх.
Интересно, должен ли код вокруг скорости и максимальной скорости действовать на XVel, а не на YVel, как вы кодировали - это будет иметь больше смысла.