Well the “Unreal Developer” way to do it would be to override UCharacterMovementComponent and add bunny hopping in there. Character movement components already have parameters related to air movement, the main one is AirControl, which lets you set what amount of control over movement you have in the air. You might be interested in this page that talks about how bunny hopping is coded. Also, UCharacterMovementComponent has a lot of code that deals with things like stairs, standing on moving objects, replication, network smoothing and anti-cheat. I recommend just extending the systems they already have rather than trying to make your own.