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