2015-04-10 3 views
0

Je suis novice en C++ et en développement de jeux. J'ai codé une fonction en utilisant la physique des balles qui retourne la gravité du monde et il semble ne pas fonctionner. Il renvoie toujours 0. Cependant, j'ai initialisé le monde, le solveur, le répartiteur, la configuration de phase large et de collision.getGravity ne fonctionne pas?

Voici le code:

void _setGravity(btScalar gravity) //sets the gravity of the world 
{ 
    if(gravity > 0.f) 
     gravity = -gravity; 
    _dynamicsWorld->setGravity(btVector3(0, gravity, 0)); 
} 

btScalar _getGravity(void) //returns the gravity of the world 
{ 
return ((btScalar*)_dynamicsWorld->getGravity()); 
} 

Y at-il quelque chose que je fais mal?

Merci.

+1

Ce casting semble très suspect, pourquoi la coulée du résultat à un pointeur * *? –

+1

Je pense que le code de _dynamicsWorld setGravity et getGravity aiderait beaucoup. Aussi juste une pensée: Vous définissez la gravité comme un vecteur, mais le renvoyer comme scalaire ....? –

+0

Au lieu de lancer l'écriture d'une fonction de convertisseur appropriée. Cela vous aidera à comprendre où est le problème. – CyberGuy

Répondre

2

La fonction getGravity retourne un btVector3en valeur, vous devez donc utiliser des vecteurs résultant getY pour obtenir la gravité:

return _dynamicsWorld->getGravity().getY(); 
+0

Merci beaucoup, je pourrais avoir besoin de plus d'aide. Alors, pouvez-vous m'aider (aide future)? – rittik

+0

@rittik: Si vous avez une autre question, demandez-la ici sur stackoverflow. – gartenriese

+0

@gartenriese Bon, alors ma prochaine question est: Comment puis-je lier mon objet à la physique des balles? Dois-je juste rendre leurs positions? – rittik