2010-04-24 10 views
0

Je développe actuellement un simple jeu Pong pour l'iPhone. Actuellement en utilisant CGRectIntersectsRect pour la détection de collision et quant à la déflexion de la balle quand elle touche la pagaie, je multiplie la vitesse de la balle avec -1 (inversant ainsi la direction de la balle). Ce que j'essaie de faire est de faire en sorte que lorsque la balle touche la pagaie, elle vérifie si elle est éloignée du centre de la pagaie et augmente l'angle de déflexion plus la balle est éloignée de la pagaie. le centre de la pagaie. (Par exemple, dans ce cas, la balle sera déviée à 90 degrés, peu importe d'où elle vient, tant qu'elle frappe le centre de la pagaie)Angle de Déviation Avancée iPhone Pong

Comment est-ce que je suis supposé faire cela?

Toute aide serait grandement appréciée.

Merci.

+0

Point de clarification des coordonnées ... 90 degrés quoi? ... l'angle d'arrivée? ... la pagaie? ... la normale de la pagaie? En physique, quand on parle d'optique et de collision, on se réfère généralement à l'angle par rapport à la normale. Cependant, un tel cadre de référence n'a aucun sens compte tenu de ce que vous avez demandé dans la question. – Sparky

+0

Les 90 degrés sont l'exemple de l'angle de déviation lorsque la balle frappe le centre exact de la palette. Voici comment je voulais que la balle se comporte; pour dévier la balle après qu'elle frappe la palette avec l'angle de déviation en référence au centre de la palette. Si la balle touche le centre de la pagaie, elle fléchirait dans un degré de 90-ish et plus loin du centre de la pagaie, l'angle de déflexion augmentera, disons, je veux qu'il dévie à un angle de 45 degrés si elle touche le côté gauche de la pagaie. – CherryBun

Répondre

0

Ce que vous nous avez donné sont des points de référence (centre et bord). Ce dont nous avons besoin, c'est d'une ligne de référence à partir de laquelle mesurer le nouvel angle. De plus, ce que vous dites n'est pas cohérent et n'a donc pas de sens.

Je suppose que ce que vous demandez est un moyen de calculer l'angle de sortie de telle sorte que ce n'est qu'une fonction de l'endroit où il a frappé sur la palette. S'il frappe le centre de la palette, quel que soit l'angle d'entrée, il rebondira à un angle de 90 degrés par rapport à la palette. S'il heurte le bord de la palette, quel que soit l'angle d'entrée, il rebondira à un angle de 45 degrés par rapport à la palette.

Si oui, alors ce qui suit devrait le faire (ce n'est pas le seul moyen). Hypothèse: La forme de la palette est un rectangle.

  • Soit L la longueur de la palette.
  • Soit K une constante telle que L/(2 * K) = 1/sqrt (2).
  • Soit D la distance du centre de la palette (peut être + ou -).

thêta = pi/2-asine (D/K);

Cela devrait vous donner un angle par rapport à la palette.

Espérons que cela aide.

+0

Oui, ce que je veux, c'est le régler de sorte que l'angle sortant soit indépendant de l'angle d'arrivée, mais en fonction de l'endroit où il se pose sur la pagaie. Je sais que cela n'a aucun sens selon la physique, mais j'essaie de le rendre amusant. Merci pour l'aide, je pense que c'est exactement ce dont j'avais besoin. – CherryBun