У меня есть эта игра "Стиль Брейкаут".
У меня есть пушка в центре, блоки вокруг пушки и колодки вокруг блоков. Вот как выглядит игра:
Мне удалось получить столкновение на пиксель, и мой мяч « отражается » при контакте с блоками со следующей математикой:
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
Где синяя линия - направление шара, а черная линия (базовая линия) - поверхность блока.
Направление - это угол, выраженный в радианах (который, конечно, можно преобразовать в градусы).
Мяч перемещается:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
Все идет нормально.
Моя проблема возникает сейчас, с колодками (3 темные и большие блоки вокруг маленьких цветных блоков).
Когда они поворачиваются, угол поверхности меняется.
Более того, мяч должен ударить по сторонам, так как я могу измерить направление удара и новое направление движения мяча?
PS : При необходимости, я могу предоставить код и воспроизводимый SWF.
редактировать
Хорошо, проблема с углами была решена с помощью Векторов , но у меня все еще есть проблема со сторонами и задним столкновением.
Я открою для этого еще один вопрос и свяжу его здесь.