2017-06-07 5 views
-3

J'essaie d'implanter des balles qui changent de direction lorsqu'elles heurtent un obstacle (dans ce cas une balle fixe). Je peux détecter quand une collision se produit mais je ne sais pas comment modifier la direction d'une balle lorsqu'elle heurte un obstacle. Voici un code:Collision boule à boule fixe

struct Vec2 
{ 
    float x, y; 
}; 

struct Ball 
{ 
    void onCollision(const Ball& fixedBall) 
    { 
     // This function will be called when a collision occurs 
     // Speed will be constant, only direction needs to change 
    } 

    void update() 
    { 
     position += direction * speed; 
    } 

    Vec2 position, direction; // direction is a normalized vector 
    float speed, radius; 
}; 

Répondre

1

Vous devrez inverser la vitesse en l'annulant.

if (collision) 
    speed = speed * -1 
+0

Ceci n'est vrai que si le vecteur de direction de la bille est perpendiculaire à la tangente entre la bille et l'obstacle. –