Would you mind sharing the script or at least sharing how you got the physics to work with the ball on a HUD? I never gave thought to an idea like this.
The ball is a 10x10 HudShape who's x and y coordinates are seperate variables, BPx and BPy (ball position x ball position y) HudShape [Ball] [player] [rect] [BPx, BPy, 10, 10]. It's movement is set up by checking where you're aiming, how much power use to move the ball and giving you a history mark depending on how much (1-100), and activating the corresponding script for that angle. Before any of the movement scripts activate however, a script will convert your power history into a seperate history called speed, which is the opposite value. So if you went full 100 power, it would give you 1 speed (this is very important later. Also, I know it's kinda confusing since speed should be higher as power is higher, but that's just the name I chose).
The movement scripts are set up so that depending on where your aiming, your ball will move x pixels left/right and y pixels up/down as long as your speed is below a 100. This is done by just adding x pixels to the BPx variable and y pixels to the BPy variable. It will also multiply your speed by a scaling factor (I think mine is something like 1.03?) and then loop the script by your speed variable. This basically means the lower the initial speed, the more times it will loop as well as how fast it loops allowing the ball to travel farther, faster. The longer it goes, the higher the speed so the longer it takes to loop. You then just check if they're gonna hit a wall by checking to see if the BPx and BPy coordinates are the same as the x and y coordinates of the wall. If it is, it will activate the script of its opposite direction.
For example if you wanted to aim to the right at a power of 100, it would first convert that power to a speed of 1. It would then active the aim 0 degree script. This will check to see if your speed is below 100. Since it just started, it's still at 1 so it's good to go. It will now add 10 pixels to the BPx variable and redraw the ball var [BPx] = [BPx] + . It will also multiply the speed by 1.03 to become 1.03, var [speed] = [speed] * [1.03] and loop [speed]. It will then loop it again and the speed will increase again, and again, and again, all while the ball is moving 10 pixels to the right each time. Now, the speed variable is at 97. It will loop one more time and the speed will be greater than 100. It will now not move the ball and it will activate the aiming script for you to hit it again. To sink the ball into the hole, it just checks to see if your speed is above 90 and if your BPx and BPy are the same as the position of hole. The 45 degree angles are also the same except they just move the ball 7.071 pixels up/down and left/right.
Anyways, hope that explains it. I didn't feel like taking pics and this way i could try to explain what I'm doing, don't know if I did it well or not .