I tried looking up a few things on physics with the actual game of pool, but it seems like I could not find everything I needed to calculate the amount of force needed depending the amount of strength the stength bar is set to, which is controlled by the player. I then a tutorial on driving a spring using drivers and shape keys, sorry for not having the link, but I am not at my computer where it is bookmarked. Looking at the tutorial, I have a hunch that it miht be possible of using drivers in my simulation. However, I cannot firgure out if it is even possible to controll the speed of the driver, and how I could rig this. If it is even possible to controll the speed,I figure that the speed could be used for the amount of force, but is this even possible? One had mention to me prior that shooting a pool stick is usually controlled with animation, but I sure cannot figure this out? Can someone help me?
Accurately simulating the cue stick to give the impact to the ball isn’t worth it. Easily translates to huge amount of work with problems, inconsistencies and hickups. I mean trying to hit the ball in a way that you intend in real life is hard and that difficulty is not the part I want to experience when I want to program or play a pool game. Just because you have a physics system doesn’t mean you need to actually model everything in your game using it. For ball bouncing and friction on the other hand, it will be handy.
So I think you should just manually control the impact force magnitude and direction the ball gets rather than having hugely complex physics setup just for driving the cue stick.
- Get the player input, force and direction however you want
- Align the stick model accordingly using keyframed actions controlling angle, trackto constraint or python alignAxisToVect()
- Play stick shooting animation that is set up from frame 0 to 100 with 0 being no force and 100 being full force. For force 75% you play it from frame 75 to 0 with speed of 100/(100-75) = 3.
- Give force and torque to the ball with Motion actuator or python applyForce() and applyTorque()