For the ball.
When we hit the bat, this is the code that deals with bouncing:
ball._movement = normal.reflect(ball._movement) * ball.bounce*1.2
# add 20% as the gravity requires a bit more power to keep the ball playing well
When not hitting anthing (just flying through air) this is the code:
ball.move(ball._movement*ball.speedIncrement)
ball movement is setup in this function earlier on:
func launch(directional_force):
ball._movement = directional_force
In the update this is how it's setup:
ball._movement.y += delta * ball._gravity
Actually, here is the complete ball.gd script, it's just easier I think :-) It's too large to paste here (over 8000 characters) so pasting here in pastebin: https://pastebin.com/Lw0csZRE