Как заставить спрайт Scratch отскочить от края лабиринта? - PullRequest
0 голосов
/ 31 мая 2018

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

enter image description here

Красное поле - игрок.Как сделать так, чтобы игрок не мог пройти через черные линии?

Этот вопрос возникал несколько раз, когда я занимался наставничеством в День Царапин.Ниже я дал ответ на свой вопрос, но мне было бы интересно увидеть и другие методы.

1 Ответ

0 голосов
/ 31 мая 2018

Я делаю это с помощью метода, который я называю «старый X и старый Y».

По сути, вы постоянно записываете текущее местоположение спрайта, а затем возвращаетесь кчто при прикосновении к строкам.

Чтобы быть немного более полезным ...

Это весь сценарий, который заботится об этом:

enter image description here

Давайте пройдемся по этому вопросу и объясним, как он работает.

Сначала мы используем две переменные - здесь они называются «OldX» и «OldY».Переменная - это способ хранения данных, используемых в проекте.Он может содержать цифры или буквы.Переменная - это что-то вроде коробки - вы можете хранить в ней вещи и смотреть, что в ней находится в разное время.Вы можете создать переменную в разделе «Блоки данных» на вкладке «Сценарии».

Так в чем же смысл этих переменных и что мы в них помещаем?

Эти переменные хранятсяположения x и y спрайта - где он в данный момент находится на сцене.Y - вертикальная ось, а x - горизонтальная ось.

Итак, эти переменные хранят записи и сохраняют текущее состояние спрайта, используя блоки «x position» и «y position», найденные в«Движение».

Итак, мы храним данные.Теперь, что нам нужно сделать с этими данными?Почему мы его храним?

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

Итак, давайте посмотрим насекунда в начале этого скрипта - у нас есть «когда щелкнул зеленый флаг», чтобы запустить скрипт, и «навсегда», так что он всегда проверяет, касается ли он линий.

Тогда у нас есть «если».Здесь мы проверяем, касаемся ли мы линий - здесь я решил проверить, касается ли он черного цвета, потому что я использовал линии как часть сцены, а также проверял край.В зависимости от вашего проекта вы можете изменить то, что он проверяет, что он касается, например, на другой спрайт.

Поэтому мы проверяем, касается ли он того, через что он не может пройти.Тогда нам нужно, чтобы это на самом деле не прошло.

Вот почему мы заставляем спрайт идти туда, где он был раньше.У нас есть блоки "set x" и "set y", чтобы заставить его перейти в определенное место.Мы устанавливаем x и y для переменных «OldX» и «OldY», которые постоянно сохраняли местоположение.

Поэтому мы устанавливаем x и y в то место, где оно было, и... это не проходит через черное!


Последнее замечание - это не очевидно, но порядок сценария здесь имеет значение.Если вы поставите блоки «set OldX» и «set OldY» над разделом «if», это не сработает.Если он делает это таким образом, то он устанавливает переменные в местоположение, даже если оно касается черного, и в итоге вы просто проходите по строкам, как будто сценария не существует.

...