Scratch — баскетбол и гравитация

Начальный уровень

Связь с другими главами

Переменные — §7

хитбокс — §19

платформер с той же гравитацией — Scratch: платформер и демосцена.


Эскиз

Кот прыгает (стрелки + пробел), мяч летит по дуге в кольцо. Счёт растёт при попадании. Кольцо может слегка двигаться — усложнение.

Часть Функция
А Гравитация и приземление на "землю"
Б Ходьба влево/вправо
В Кольцо и невидимый хитбокс
Г Мяч, бросок, счёт

Часть А — гравитация

Переменные для кота: скорость_y, на_земле (для всех спрайтов или только для кота).

[Когда 🟢 нажат]
установить [скорость_y v] в (0)
установить [на_земле v] в (истина)

повторять всегда
  если <нажата клавиша [пробел] и <(на_земле) = [истина]>> то
    установить [скорость_y v] в (14)
    установить [на_земле v] в (ложь)
  конец

  изменить [скорость_y v] на (-1)
  изменить y на (скорость_y)

  если <касается [Земля v] или y < (-140)> то
    установить [скорость_y v] в (0)
    установить [на_земле v] в (истина)
    установить y в (-140)
  конец
  ждать (0.02) сек.
конец

Спрайт Земля — зелёная полоса внизу сцены. Тот же приём — в Scratch: платформер и демосцена — платформер.

Контрольная точка: кот падает и останавливается на земле; пробел подбрасывает.


Часть Б — ходьба

Параллельный скрипт у кота:

[Когда 🟢 нажат]
повторять всегда
  если <нажата клавиша [стрелка вправо]?> то
    изменить x на (5)
  конец
  если <нажата клавиша [стрелка влево]?> то
    изменить x на (-5)
  конец
  ждать (0.02) сек.
конец

Часть В — кольцо и хитбокс

  1. Спрайт Кольцо — картинка обода.
  2. Спрайт Хитбокспрозрачный прямоугольник чуть меньше отверстия; закрепите его по центру кольца.
  3. При броске проверяйте касается [Хитбокс], а не весь спрайт кольца — так попадание честнее.

Подробнее про приём — §19 хитбокс.


Часть Г — мяч и счёт

Спрайт Мяч. При нажатии, например, x:

[Когда нажата клавиша [x v]]
перейти к [Кот v]
показаться
повторять пока не <касается [Хитбокс v]?>
  изменить y на (скорость_мяча_y)
  изменить x на (скорость_мяча_x)
  изменить [скорость_мяча_y v] на (-0.5)
  ждать (0.02) сек.
конец
изменить [счёт v] на (1)
воспроизвести звук [попадание v]
спрятаться

Старт мяча у кота, начальные скорость_мяча_x и скорость_мяча_y подберите опытным путём.

Логическая ошибка со счётом

Если счёт растёт при каждом кадре касания, добавьте флаг уже_засчитано или спрячьте мяч сразу после первого попадания — иначе +10 очков за один бросок.

Контрольная точка: один бросок — одно очко; мяч исчезает или возвращается к коту.


Дополнительно

  • Кольцо слегка двигается влево-вправо (изменить x в повторять всегда).
  • Чит: клавиша останавливает кольцо на 3 секунды.
  • Remix Gravity Example — сравнить с вашей версией.

Вопросы для самопроверки

  1. Зачем две переменные скорость_y и на_земле?
  2. Почему хитбокс делают отдельным спрайтом?
  3. Что произойдёт, если убрать ждать из цикла гравитации?

Что дальше

Дальше Ссылка
Клоны и арканоид Scratch — арканоид с клонами
Клоны в справочнике Scratch §9
Lab — гравитация прыжок и падение