2010-04-25 4 views
2

Je suis assez nouveau à XNA & dev de jeu et bloqué à la réflexion de la balle. Ma balle se reflète une fois qu'elle frappe la chauve-souris, mais seulement dans un angle, peu importe l'angle où se trouve la chauve-souris.2D Gaming - Comment réfléchir une balle de la chauve-souris?

Voici le code:

if (BallRect.Intersects(BatRect)) 
    { 
     Vector2 NormBallVelocity = Ball.velocity; 
     NormBallVelocity.Normalize(); 
     NormBallVelocity = Vector2.Reflect(Ball.velocity, NormBallVelocity); 
     Ball.velocity = NormBallVelocity; 
    } 

La balle est rétractait son chemin de retour. Comment puis-je donner l'impression que la balle se reflète sur la balle?

J'ai vu d'autres postes, mais ils sont sur le devant 3D je suis trop nouveau pour traduire en termes 2D ...

Répondre

4

Je suis sûr que vous devez réfléchir sur la normale au lieu de la vitesse de la balle de la chauve-souris et c'est normal.

+0

Ah battu. +1 pour cela – Robb

-1

Vous devez probablement calculer d'abord à quelle distance de la chauve-souris est la distance horizontale (comme dans, à quelle distance de la balançoire), puis la faire pivoter de 90 degrés pour obtenir l'angle nécessaire pour la balle.

+0

Ceci ne prend pas en compte la vitesse actuelle de la balle. Vous aurez toujours besoin de réfléchir à partir de ce vecteur au lieu de simplement l'assigner. –

+0

Pourriez-vous s'il vous plaît prendre le temps d'expliquer votre idée? J'ai réfléchi la balle sur la vélocité de la batte et c'est normal normal mais ça continue toujours à 45 degrés en Q2. Pourquoi la balle ne prend-elle pas en compte les variables? – sid

+0

Fondamentalement, si la chauve-souris est droite-gauche lorsque la balle frappe, la balle devrait plus ou moins revenir directement. Si la fin de la chauve-souris (que le joueur ne tient pas) est plus proche du bas de l'écran que la fin du joueur (en supposant que le terrain arrive par le haut), la balle part à gauche. Si c'est plus loin de l'écran, alors la balle va bien. Désolé pour l'explication embrouillée. – RCIX

1

En se référant à MSDN Reflect Method, il semble que vous voulez réfléchir de la vitesse de la chauve-souris et normal.

+0

J'ai essayé cela plus tôt. Je viens de remplacer la balle avec chauve-souris dans le code et je ne sais pas pourquoi, mais ça va exactement à 45 degrés dans le 2ème quadrant, peu importe l'angle de la chauve-souris, même si elle doit passer par la chauve-souris !! J'ai aussi essayé de changer la rotation de la balle, mais c'est juste de ne pas en tenir compte. Que dois-je faire? – sid

+0

Découvrez cette question SO: http://stackoverflow.com/questions/2212042/xna-collision-detection-vector2-reflect-help-calculating-the-normal-of-a-circ Cela ressemble à ce que vous essayez aborder avec une explication assez claire. – Robb

Questions connexes