TGB/MiniTutorials/BallPhysics

From TDN

Back

Basic Ball Physics Templates
Description:

This sample resource will give you config datablocks outlining the physics properties of several ball types.

This resource uses the base parameters that are available in the TGB Level Builder. Because that is so, every parameter set by the config datablocks can be tweaked for different results inside the Level Builder. This resource also contains config datablock definitions for a bowling pin and a floor (which can also be used for walls). In addition to all of the code, this resource also contains simple imageMaps for testing purposes.

Image:BallPhysicsPic.png


 Download Files :

Ball Physics Resource




To plug this into TGB, copy the folder and paste it in your .../tgb/resources directory. Next, load up any TGB project and go to Project -> Resources to open the resource manager. Look for a resource named "ballPhysics" and add it to your project. Once it is added, save your project. The resource should automatically execute the proper files and load the images properly. Each of the images have been assigned a default config datablock. So, when you drag any of the images into your scene view, the proper config datablock should already be assigned and ready for testing.


NOTE: Though it may sound very wierd, if you run into problems with the collision between the ball and the pin, increase the mass of the floor.

datablock t2dSceneObjectDatablock( BounceBall )
{
   Class = "BounceBall";
   Size = "3 3";
   CollisionMaxIterations = "2";
   CollisionActiveSend = "true";
   CollisionActiveReceive = "true";
   CollisionPhysicsReceive = "false";
   CollisionDetectionMode = "CIRCLE";
   CollisionResponseMode = "RIGID";
   CollisionCircleSuperscribed = "false"; //For circle collisions
   CollisionPolyScale = "0.9 1";
   ConstantForce = "0 120";
   ConstantForceGravitic = "true";
   AutoMassInertia = "true";
   Density = "0.003";
   Friction = "0.3";
   Restitution = "0.8";
};

datablock t2dSceneObjectDatablock( BowlingBall )
{
   Class = "BowlingBall";
   Size = "10 10";
   CollisionMaxIterations = "2";
   CollisionActiveSend = "true";
   CollisionActiveReceive = "true";
   CollisionDetectionMode = "CIRCLE";
   CollisionResponseMode = "RIGID";
   CollisionCircleSuperscribed = "false"; //For circle collisions
   CollisionPolyScale = "0.9 1";
   ConstantForce = "0 160";
   ConstantForceGravitic = "true";
   AutoMassInertia = "true";
   Density = "0.035";
   Friction = "0.3";
   Restitution = "1.0";
};

datablock t2dSceneObjectDatablock( BowlingPin )
{
   Class = "BowlingPin";
   Size = "6.5 15.9";
   CollisionActiveSend = "true";
   CollisionActiveReceive = "true";
   CollisionPhysicsSend = "true";
   CollisionPhysicsReceive = "true";
   CollisionDetectionMode = "POLYGON";
   CollisionResponseMode = "RIGID";
   CollisionPolyList = "-0.948 0.494 -0.531 -0.847 0.0104 -0.962 0.479 -0.843 0.938 0.455 0.708 0.953 -0.0104 0.974 -0.646 0.923";
   ConstantForce = "0 120";
   ConstantForceGravitic = "true";
   AutoMassInertia = "true";
   Density = "0.04";
   Friction = "0.075";
   Restitution = "0.6";
};

datablock t2dSceneObjectDatablock( FloorandWalls )
{
      CollisionActiveReceive = "true";
      CollisionPhysicsSend = "false";
      CollisionResponseMode = "RIGID";
      Immovable = "true";
};

datablock t2dSceneObjectDatablock( TennisBall )
{
   Class = "TennisBall";
   Size = "4.5 4.5";
   CollisionActiveSend = "true";
   CollisionActiveReceive = "true";
   CollisionPhysicsReceive = "false";
   CollisionDetectionMode = "CIRCLE";
   CollisionResponseMode = "RIGID";
   CollisionCircleSuperscribed = "false"; //For circle collisions
   CollisionPolyScale = "0.9 1";
   ConstantForce = "0 120";
   ConstantForceGravitic = "true";
   AutoMassInertia = "true";
   Density = "0.005";
   Restitution = "0.8";
};


Back