Хабы: Алгоритмы, Звук, Математика, Разработка игр
В последнее время я экспериментирую с визуализаторами музыки. Источником вдохновения для одного из моих любимых стала классическая игра Pong. В классическом Pong мяч отбивается от ракеток в постоянном ритме. Что, если мы синхронизируем удары с долями музыкальных композиций, заставив ракетки танцевать?
Чтобы это стало возможным, мы изменим физику игры так, чтобы мяч двигался с постоянной скоростью, а ракетки могли двигаться в любую точку своей половины экрана.
Также мы сохраним следующие правила классической игры:
- Точка контакта мяча с ракеткой определяет угол отражения
- У ракеток нет ограничений по скорости
- Мяч отскакивает от верха и низа экрана
Такая физика обеспечивает нам необходимое число степеней свободы для перемещения ракеток, чтобы они ударяли по мячу в нужный момент.
Простая стратегия попадания в любой тайминг — это нахождение ракеток близко к центру. Это даёт нам мало места по горизонтали, но вертикальное пространство практически бесконечно, ведь мяч может отскакивать от нижнего и верхнего краёв экрана. Для получения любой нужной длительности удара мы можем замедлять горизонтальную скорость, ударяя по мячу более вертикально. Но хотя это доказывает, что решение существует для любых входных данных, смотреть на него было бы не очень интересно.
Читать дальше →