J'ai ce jeu "Breakeout style".
J'ai un canon au centre, des blocs autour du canon et des coussinets autour des blocs. Voici à quoi ressemble le jeu:
J'ai réussi à obtenir la collision par pixel et ma balle " réfléchit " au contact des blocs avec le calcul suivant:
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
Où la ligne bleue est la direction de la balle et la ligne noire (ligne de base) est la surface du bloc.
La direction est un angle exprimé en radian (qui peut être converti en degrés, bien sûr).
Le ballon est déplacé par:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
Jusqu'ici tout va bien.
Mon problème vient maintenant, avec les pads (les 3 gros blocs sombres autour des petits blocs colorés).
Lorsqu'ils se retournent, l'angle de surface change.
Plus que cela, la balle doit également frapper les côtés, alors, comment puis-je mesurer la direction du coup et la nouvelle direction de mouvement de la balle?
ps : Si nécessaire, je peux fournir du code et un swf jouable.
Éditer
Ok, le problème avec les angles a été résolu avec les vecteurs , mais j'ai toujours le problème avec les côtés et la collision arrière.
Je vais ouvrir une autre question pour cela et le lier ici.