Как поймать касание двух спрайтов в Scratch?
Делаю игру, где кот должен поймать мышку. Как в скретче проверить, что два спрайта столкнулись и коснулись друг друга?
2 ответа
Чтобы поймать столкновение, нужен блок «касается …» из голубой полки «Сенсоры». 🎯 Это блок-вопрос: он отвечает «да», когда спрайты соприкоснулись.
Его ставят внутрь блока «если … то», а всё это — в цикл «всегда».
Пример — кот ловит мышку. Этот скрипт ставим коту:
когда нажат зелёный флажок
всегда
если <касается «Мышка»> то
сказать «Поймал!» 1 секунд
изменить «Очки» на 1
Как собрать:
- Кликни на спрайт кота (скрипт вешаем именно на него).
- Возьми «всегда», внутрь — «если … то».
- В окошко «если» вставь блок «касается …».
- В выпадающем списке блока выбери «Мышка».
- Внутрь «если» положи, что произойдёт при ловле.
Читается как фраза: «Всегда проверяй: ЕСЛИ кот касается мышки, ТО скажи Поймал и добавь очко».
Совет: чтобы мышка после ловли исчезала и появлялась в новом месте, добавь ей блоки «перейти в случайное место» и продолжай игру.
Частая ошибка: проверить касание один раз, без «всегда». Тогда Scratch посмотрит только в самом начале и больше не будет следить. Касание надо проверять постоянно — значит, внутри бесконечного цикла. ✅
Есть ещё блок «касается цвета …» — он реагирует не на спрайт, а на цвет. Удобно для лабиринтов: «если касается чёрного цвета (стенки), вернись назад».
И помни про точность: касание срабатывает по картинке спрайта, а не по квадрату вокруг. Поэтому если у героя много пустого места по краям рисунка, лучше обрезать его в редакторе костюмов, чтобы ловля была честной. 🙂