By lifting the wind underneath the blades of a helicopter a helicopter defies gravity, so flying is the absent of gravity
distance flown : speed * time.
calculate this over the x, y and z axis and you have your movement in those directions.
Now you have only 2 axis you want to fly on.
Use triangle calculations to find the increasment of the axis :
lets say up and down is the Z-axis.
front to back is the X-axis
xincrease = Math.cos( angle of flight) * distance
zincrease = Math.sin( angle of flight) * distance
remember to recalculate to radians, cause MAth class uses radiants and no degrees
Now for drag you can substract that from the distance.
For windverlocity and direction, you can do the same calculations and subtract them from your movement.
if you mean that you must keep pressing a button up to stay up, you can use curve to acceleration for falling, at first go slow and speed up the fall.
static energy becomes kinetic energy (or something like that)
acceleration over the Z-axis : zdownfall = zdownfall + increasment
Then when you press the up key : zdownfall = 0
For 3 dimensions movement I have problems too, so dont ask me.