Продолжение цикла статей о физике в играх про Соника. В этом посте рассматриваются отталкивания персонажей от различных игровых объектов и их суперспособности.
Ссылки на другие части серии:
Часть 1: твердые тайлы
Часть 2: бег
Части 3 и 4: прыжки и вращение
Части 5 и 6: потеря колец и нахождение под водой
Часть 7: пружины и штуковины
- 1 Пружинные площадки
- 2 Воздушные шарики
- 3 Бамперы
- 4 Пушки
- 5 Крышки с пружинами
- 6 Вертушки
- 7 Лифты в небе
- 8 Грибы
- 9 Разрушение стен
- 10 Разрушаемые блоки и камни
Красные пружинные площадки придают Сонику скорость 16, а жёлтые — скорость 10. В зависимости от направления площадки (вверх или вниз), значение отрицательное или положительное, и соответственно скорости по оси Y придается это значение. Если пружинная площадка направлена влево или вправо, значение скорости отрицательное или положительное, соответственно скорость по оси X приравнивается к этому значению. Вертикальные площадки не влияют на скорость X, как и горизонтальные площадки не влияют на скорость Y.
Диагональные пружинные площадки
В Sonic the Hedgehog (16-bit) нет диагональных пружинных площадок. Однако они есть в Sonic 2 (16-bit), 3, Knuckles и CD. В Sonic 2, 3 и Knuckles они работают одинаково, но в Sonic CD принцип отличается.
в Sonic 2, 3 и Knuckles диагональная пружина устанавливает скоростям X и Y значение пружинной площадки с соответствующим знаком. Поэтому пружина, направленная вверх-вправо придает скорость Y, равную -16 и скорость X, равную 16. Проблема этого метода в том, что технически Соник отталкивается диагонально быстрее, чем горизонтально или вертикально. Это потому, что разработчики не позаботились учесть косинусы и синусы.
В Sonic CD они исправились. Удобно, что абсолютные значения синуса и косинуса угла в 45 градусов одинаковы, поэтому требуется только одно значение. Скорость становится равной 11.3125 для красных пружин и 7.0703125 для жёлтых.
Блокировка горизонтального управления
Когда Соник отскакивает от горизонтальной пружины (красной или жёлтой), он не может тормозить или иным способом влиять на свою скорость X в течение 16 циклов. Движок достигает этого, устанавливая ту же блокировку горизонтального управления, что и при скатывании с крутых склонов (в S3 и Knuckles байты $32-33 являются таблицей состояний объекта игрока). Зачем блокировать горизонтальное управление? При столкновении с пружиной игрок скорее всего нажимает крестовину в направлении пружины, и это может привести к отталкиванию Соника в анимации торможения. Временное игнорирование ввода — это быстрое и элегантное решение.
Анимация
В случае пружинной площадки, направленной вверх, когда Соник теряет всю скорость, направленную вверх, он переходит в анимацию ходьбы. Кадры этой анимации сменяются каждые 8 циклов.
В случае любой из диагональных пружинных площадок Соник вообще не переходит анимации ходьбы в воздухе. Он сохраняет анимацию «штопора» (трёхмерного вращения), кадры которой сменяются раз в 5,5 цикла.
При столкновении Соника с воздушными шариками на уровнях Carnival Night Zone его скорость Y устанавливается равной -7, вне зависимости от угла столкновения. Скорость X не изменяется.
Бамперы в Spring Yard Zone придают Сонику скорость X, равную 7*cos(p), и скорость Y 7*-sin(p), где p — это угол между центрами бампера и Соника. Скорость устанавливается вне зависимости скорости Соника до столкновения с бампером.
Пушки в Carnival Night Zone придают Сонику горизонтальную скорость 16*cos(p), и вертикальную скорость 16*-sin(p), где p — угол наклона пушки.
Красные крышки с пружинами, которые закрывают трубы в Chemical Plant Zone, работают как пружинные площадки, но немного сильнее, чем жёлтые площадки. При столкновении они придают Сонику скорость Y, равную -10.5.
Чёрные вертушки, которые разгоняют ежа вперёд в Chemical Plant Zone устанавливают скорость X равной 16. Однако они не замедляют его, если он уже движется быстрее.
Лифты в небе на уровнях Hill Top Zone перемещаются со скоростью X, равной 2, и скоростью Y, равной 1.
Грибы в Mushroom Hill Zone работают как пружинные площадки, однако каждый последующий отскок становится выше предыдущего (до трёх отскоков). Первый отскок придаёт скорость Y -6.5, второй -7.5, а третий -8.5.
В Sonic 1, 2, 3 и Knuckles для пробивания разрушаемых стен при вращении абсолютная скорость X персонажа должна превышать 4.5 (за исключением персонажа Knuckles, который крошит стены при столкновении, при этом ему не обязательно вращаться). Столкновения с такими стенами не влияют на скорость X.
Однако когда Knuckles разрушает стены в Sonic 3 и Knuckles, несмотря на то, что его скорость X не изменяется, он не двигается в кадре, в котором ударяет стену. То же самое справедливо для пробивания Соником стены при вращении в Sonic 3 и Knuckles.
В Sonic CD, ограничение по скорости X убрано. Соник может пробивать разрушаемые стены, просто прыгая рядом с ними или вращаясь на любой скорости.
Когда Соник запрыгивает на разрушаемые объекты, такие как камни в Hill Top Zone, блоки в Marble Zone или крышки труб в Chemical Plant Zone, он отскакивает от них со скоростью Y, равной -3. Скорость X не изменяется.
Часть 8: суперскорости
- 1 Супербыстрые ботинки
- 2 Супер/Гиперсоник
- 3 Супер Тейлс, Супер/Гипернаклз
- 4 Отбор колец
- 5 Примечания
Примечание переводчика: супербыстрые ботинки (Super Fast Shoes) — это бонус увеличения скорости, действующий 20 секунд и повышающий ускорение и максимальную скорость Соника. Выбивается из вот таких мониторов:
Переменная | Значение |
---|---|
Ускорение | 0.09375 |
Торможение | 0.5 (не изменяется) |
Трение | 0.09375 |
Максимальная скорость | 12 |
Ускорение в воздухе | 0.1875 |
Трение при вращении | 0.046875 |
Торможение при вращении | 0.125 (не изменяется) |
Примечание: если Соник падает в воду, все эффекты супербыстрых ботинок (Super Fast Shoes) обнуляются. «Подводные» переменные полностью их заменяют. Если вы выпрыгнете из воды, эффект супербыстрых ботинок не вернётся. Похоже, что это относится ко всем 5 играм.
В Sonic 3 и Knuckles темп музыкальной композиции увеличивается в 1.25 раза.
Примечание переводчика: Суперсоник (Super Sonic) — это суперформа персонажа Sonic the Hedgehog. Такая форма Соника впервые была применена в игре Sonic the Hedgehog 2 и в различном объёме реализовалась затем в каждой основной игре про Соника. Превратиться в Суперсоника можно, собрав все семь Изумрудов Хаоса, найдя не менее 50 колец и потеряв всю защиту. Сделав двойной прыжок, Соник становится жёлтым Суперсоником, это более быстрая и почти неуязвимая форма Соника. Однако на поддержание этой формы тратятся кольца (см. ниже).
В играх Sonic 3 и Knuckles, после сбора всех Изумрудов Хаоса на специальных уровнях можно собрать семь Суперизумрудов, после чего превратиться в Гиперформу персонажа. Она также тратит собранные кольца. В этом режиме персонаж может делать направленные двойные прыжки, уничтожать всех противников на экране и не способен утонуть, в отличие от суперформы.
Переменные относятся к Суперсонику в Sonic 2 и к Супер- или Гиперсонику в Sonic 3 и Knuckles, за исключением отмеченной переменной.
Переменная | Значение | Значение (под водой) |
---|---|---|
Ускорение | 0.1875 | 0.09375 |
Торможение | 1 | 0.5 |
Трение | 0.046875 (не изменяется) | 0.046875 (не изменяется) |
Максимальная скорость | 10 | 5 |
Ускорение в воздухе | 0.375 | 0.1875 |
Начальная скорость прыжка | 8 | 3.5 (не изменяется) |
Скорость прыжка при отпускании кнопки | 4 (не изменяется) | 2 (не изменяется) |
Трение при вращении | 0.09375 (0.0234375 в Sonic 3 и Knuckles) | 0.046875 (0.0234375 в Sonic 3 и Knuckles) |
Торможение при вращении | 0.125 (не изменяется) | 0.125 (не изменяется) |
Способность Hyper Blast (только у Гиперсоника)
Когда игрок нажимает второй раз кнопку прыжка в воздухе, скорость Соника по оси X приравнивается 8, если он смотрит вправо, и к -8, если влево, а скорость по оси Y обнуляется. Если игрок удерживает «вверх» на крестовине при нажатии на кнопку, то скорость Соника по оси Y приравнивается к -8, а по оси X обнуляется.
Переменная | Значение | Значение (под водой) |
---|---|---|
Ускорение | 0.09375 | 0.046875 |
Торможение | 0.75 | 0.375 |
Трение | 0.046875 (не изменяется) | 0.046875 (не изменяется) |
Максимальная скорость | 8 | 4 |
Ускорение в воздухе | 0.1875 | 0.09375 |
Начальная скорость прыжка | (не изменяется) | (не изменяется) |
Скорость прыжка при отпускании кнопки | (не изменяется) | (не изменяется) |
Трение при вращении | 0.0234375 | 0.0234375 |
Торможение при вращении | 0.125 (не изменяется) | 0.125 (не изменяется) |
Скорость взбирания (только для Наклза) | 2 | 2 |
Начальная скорость скольжения (только для Наклза) | 4 (не изменяется) | 4 (не изменяется) |
Ускорение скольжения (только для Наклза) | 0.046875 | 0.046875 |
Стенотрясение (Wall Quake) (только для Гипернаклза)
Чтобы Наклз смог сотрясти экран и уничтожить всех врагов при контакте со стеной, он должен скользить со скоростью 4.5 пикселей за цикл или выше.
Находясь в режиме Супер/Гипер, персонаж теряет по одному кольцу каждые 60 циклов, или раз в 1 секунду.
Если Супер/Гиперперсонаж получает супербыстрые ботинки, разбив монитор, переменные супербыстрых ботинок заменяют переменные режима Супер/Гипер, на самом деле замедляя персонаж (однако максимальная скорость остаётся немного выше). Это может быть нежелательно в вашем собственном движке.
Когда Супер/Гиперперсонаж падает в воду, он использует указанные выше переменные. Однако, если они становятся Супер/Гипер уже под водой, переменные режима Супер/Гипер становятся такими, как будто он не находится под водой. Это баг, и его следует избегать в своём движке.
P.S. снова для внимательных и любопытных читателей. Здесь в первое зашифрованное слово заканчивается. Слова не относятся к вселенной Соника, однако для расшифровки требуется её знание (впрочем, гуглением вполне можно обойтись).
Автор: PatientZero