2016-01-18 1 views
2

Je travaille actuellement sur l'intégration de Bullet SDK dans mon moteur de jeu. Actuellement, j'essaie d'appliquer une force à mes objets en utilisant un clic de souris. Jusqu'à présent, j'ai échoué. Voici le code qui est appelé lorsqu'un objet est cliqué sur:Problème d'application de l'impulsion avec la souris

void PhysicsComponent::ApplyForce(glm::vec3& hitPoint, glm::vec3& direction, float amount) 
{ 
    if (!m_body) 
     return; 

    m_body->activate(true); 
    btVector3 force = btVector3(0, 1, 0) * amount; 
    m_body->applyImpulse(force, centerOfMass); 

} 

Si j'utilise la même idée dans ma mise à jour() fonction, il fonctionne très bien. Pourquoi est-ce?

Répondre

0

Résolu.

Problème n'avait rien à voir avec Bullet. Je stockais mes composants physiques dans un vecteur en tant que références et attachant & (m_physicsComponents.back()) à mes objets. Chaque fois que le vecteur est redimensionné, 1 objet se casse. Je n'avais tout simplement pas remarqué le problème jusqu'à présent, puisque l'objet cassé était le sujet sur lequel mon objet test était assis. J'ai changé mon vecteur pour stocker les pointeurs et tout fonctionne.