ok merci c'est cool çà marche

Par contre j'ai une question (encore

) mais d'ordre plus général ... Quand tu utilise bullet tu l'initialise comme ceci :
btDiscreteDynamicsWorld *World = 0;
btDefaultCollisionConfiguration *CollisionConfiguration = new btDefaultCollisionConfiguration();
btBroadphaseInterface *BroadPhase = new btAxisSweep3(btVector3(-1000, -1000, -1000), btVector3(1000, 1000, 1000));
btCollisionDispatcher *Dispatcher = new btCollisionDispatcher(CollisionConfiguration);
btSequentialImpulseConstraintSolver *Solver = new btSequentialImpulseConstraintSolver();
World = new btDiscreteDynamicsWorld(Dispatcher, BroadPhase, Solver, CollisionConfiguration);
World->setGravity(btVector3(0,-9.8,0));
Tu me parle d'ajouter à la simulation çà signifie quoi ? Car je suis vraiment novice sur bullet ... je sais qu'il y a des fonctions à ajouter telles que :
static void UpdatePhysics(u32 TDeltaTime);
static void UpdateRender(btRigidBody *TObject);
static void ClearObjects();
static int GetRandInt(int TMax) { return rand() % TMax; }
Question :
Est-ce qu'il faut toujours avoir ces fonctions ? Et quel est le rôle de UpdateRender ?
void UpdateRender(btRigidBody *TObject) {
ISceneNode *Node = static_cast<ISceneNode *>(TObject->getUserPointer());
// Set position
btVector3 Point = TObject->getCenterOfMassPosition();
Node->setPosition(vector3df((f32)Point[0], (f32)Point[1], (f32)Point[2]));
// Set rotation
vector3df Euler;
const btQuaternion& TQuat = TObject->getOrientation();
quaternion q(TQuat.getX(), TQuat.getY(), TQuat.getZ(), TQuat.getW());
q.toEuler(Euler);
Euler *= RADTODEG;
Node->setRotation(Euler);
}
C'est nécessaire de les avoir pour utiliser ce que tu m'expliquais avant sur l'utilisation de la capsuleshape et du ghost ?
Merci pour tes réponses