I got some working code but it's a little wonky, in a fun sort of way. I'm posting it here so I can remember it later.
// collision with ground
if (guy.sprite.GetPosition().y > 520)
{
guy.sprite.SetY(520);
airtime.Reset();
}
if (guy.sprite.GetPosition().y < 520 && hasJumped == false)
guy.sprite.Move(0, 10 * airtime.GetElapsedTime());
if (guy.sprite.GetPosition().y < 520 && hasJumped == true)
guy.sprite.Move(0, -10 / airtime.GetElapsedTime() + 10 * airtime.GetElapsedTime() * airtime.GetElapsedTime());
if (App.GetInput().IsKeyDown(sf::Key::Up) && guy.sprite.GetPosition().y > 519.5)
{
hasJumped = true;
guy.sprite.Move(0, -1);
}
[attachment deleted by admin]