Материал из Скретч Вики

Есть несколько способов сделать так, чтобы спрайт прыгал, в зависимости от того, как вы хотите чтобы спрайт прыгал и насколько реалистично это выглядело. Данная статья содержит несколько способов, сортированные от самых не реалистичных до самых реалистичных. Клавиша обычно используется для прыжка в играх, но иногда Пробел, Z, X, W, или даже мышь используется для прыжка.

Простой прыжок

Данный скрипт используется в анимациях и приходит к тому, что спрайт телепортируется наверх и вниз.

когда щёлкнут по зелёному флагу
повторять всегда
если <клавиша (стрелка вверх v) нажата?>, то // обычная клавиша для прыжка
изменить y на (50)
ждать (0.5) секунд
изменить y на (-50)

Скрипт ниже приведёт к тому, что спрайт будет двигаться вверх при зажатии стрелки вверх.

когда щёлкнут по зелёному флагу
повторять всегда
если <клавиша (стрелка вверх v) нажата?>, то // обычная клавиша для прыжка
изменить y на (5)

Он был использован в проекте «Scrolling Demo» от SampleProjectsTeam.

Ещё один способ который работет довольно эффективно и реалистично:

когда щёлкнут по зелёному флагу
повторять всегда
если <клавиша (стрелка вверх v) нажата?>, то // обычная клавиша для прыжка
повторить (10) раз
изменить y на (20)
end
повторить (10) раз
изменить y на (-20)
end

Он довольно быстрый, но ты можешь отрегулировать скорость, добавив блок «ждать» до блока «изменить y».

Падение

Данный скрипт «телепортирует» спрайт вверх и затем делает его падать на определённой скорости, пока спрайт не коснётся земли.

когда щёлкнут по зелёному флагу
повторять всегда
если <клавиша (стрелка вверх v) нажата?>, то // обычная клавиша для прыжка
изменить y на (50)
повторять пока не <касается цвета (#000)?> // цвет земли
изменить y на (-5)

Следующий скрипт же сделает так, чтобы спрайт двигался вверх с определённой скоростью и падать с определённой скоростью.

когда щёлкнут по зелёному флагу
повторять всегда
если <клавиша (стрелка вверх v) нажата?>, то // обычная клавиша для прыжка
повторить (10) раз
изменить y на (5)
end
повторять пока не <касается цвета (#000)?> // цвет земли
изменить y на (-5)

Ограниченные прыжки

В большинстве видеоигр нельзя прыгать более чем фиксированное кол-во раз и нельзя прыгать в воздухе. Это можно сделать на Скретч.

Под розовыми блоками под названием «прыгать» подразумевается скрипт для прыжка.

Чтобы сделать так, чтобы можно было прыгать только с земли, используйте данный скрипт:

когда щёлкнут по зелёному флагу
повторять всегда
если <<клавиша (стрелка вверх v) нажата?> или <касается цвета (#000)?>>, то // обычная клавиша для прыжка, цвет земли
изменить y на (5)
прыгать:: custom

Двойной прыжок — распространенный элемент в видеоиграх. Хотя это невозможно в реальной жизни, эти скрипты могут заставить спрайт подпрыгнуть до двух раз.

когда щёлкнут по зелёному флагу
повторять всегда
если <касается цвета (#000)?>, то // цвет земли
задать [прыжки v] значение (0)
end
end

когда щёлкнут по зелёному флагу
повторять всегда
если <<клавиша (стрелка вверх v) нажата?> или <касается цвета (#000)?>>, то // обычная клавиша для прыжка, цвет земли
изменить y на (5)
изменить [прыжки v] на (1)
прыгать:: custom
иначе
если <<клавиша (стрелка вверх v) нажата?> и <(прыжки) < [2]>>, то // это не даст вам прыгать больше двух раз
изменить [прыжки v] на (1)
прыгать:: custom
end
end

Чтобы спрайт прыгал до n раз, замените 2 на n.

Реалистичные прыжки

Чтобы сделать простую игру-прыгалкку (не путать с платформером), используйте этот скрипт:

когда щёлкнут по зелёному флагу
перейти в x: [*значение*] y: [*значение*]
задать [скорость y v] значение (0)

Затем введите этот фрагмент кода:

когда клавиша [пробел v] нажата
задать [скорость y v] значение [*значение*]
повторить (((скорость y) * (2)) + (1)) раз
изменить y на (скорость y)
изменить [скорость y v] на (-1)
end

Физически точные прыжки

С обнаружением земли

Более реалистичный эффект для прыжков, обычно используемый в играх, выглядит следующим образом, используя переменную для управления вертикальной скоростью спрайта (имитируя гравитацию):

когда щёлкнут по зелёному флагу
задать [скорость y v] значение (0)
повторять всегда
изменить y на (скорость y)
end

когда щёлкнут по зелёному флагу
повторять всегда
... // проверить, находится ли игрок на земле
если <касается цвета (#000)?>, то // цвет платформы
задать [скорость y v] значение (0)
... // проверить, хочет ли игрок прыгать
если <клавиша (стрелка вверх v) нажата?>, то
... // прыжок
задать [скорость y v] значение (9.9)
end
end
изменить [скорость y v] на (-0.5) // гравитация
end

Без обнаружения земли

Если вам не нужно обнаруживать землю, а просто нужен реалистичный гравитационный прыжок, который закончится в начальной точке, используйте этот скрипт:

когда щёлкнут по зелёному флагу
повторять всегда
если <клавиша (стрелка вверх v) нажата?>, то
задать [скорость y v] значение (10)
повторить (21) раз
изменить y на (скорость y)
изменить [скорость y v] на (-1) // имитация гравитации
end
end
Cookie-файлы помогают нам предоставлять наши услуги. Используя наши сервисы, вы соглашаетесь с использованием cookie-файлов.