Scratch — транслируем сенсорные датчики

avatar
Ross Webster-Salter
8 апреля 2018 в 11:45
686
1
0

Я вернулся к этому проекту с немного большей решимостью исправить свою старую ошибку.

См.: https://scratch.mit.edu/projects/75999804/

Описание проблемы При использовании сенсорного блока "касание цвета" он работает правильно (несмотря на подпрыгивания и может правильно прыгать). Я хотел сделать свои собственные сенсорные датчики для большего контроля (с разными объектами, разными цветами и т. д.). Однако мои сенсоры прикосновения не работают с таким же поведением, и я не могу понять, почему (спрайт больше не "подпрыгивает" и "прыгает" должным образом).

Просмотр проблемы в действии Сравните поведение - См. комментарий в спрайте scmpoo для проблемной области - Под бесконечным циклом замените следующее «touchingFoot = true» на «touching color [brown]» У них должно быть одинаковое действие, но вы увидите разницу в поведении

.

TouchingFoot (и все датчики) объявлены в игре и представляют собой непрерывную циклическую трансляцию (для обнаружения контакта с желаемыми объектами).

Надеюсь, что кто-то может помочь, я действительно ломаю голову здесь (не каламбур).

-- Дополнительная информация - 25.04.2018

Я хотел попробовать использовать датчики, чтобы избежать очень длинных операторов if. (Это может произойти, если я сделаю сайд-скроллер со многими платформами). Сложно найти правильную логику. (Я вижу, проблема в том, что когда спрайт касается только одного из блоков, запросы от других блоков (not_touching) конкурируют с циклом блока, которого он касается.

Я искал способ выполнять проверки внутри самой платформы. (Чтобы сделать операторы if более управляемыми).

Источник
Mithical
8 апреля 2018 в 21:04
0

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

Ответы (1)

avatar
Heath Mitchell
23 апреля 2018 в 17:46
0

Ответ: Я не могу заставить ваш проект работать должным образом, но следующее заставит его вести себя как блок «касание цвета [коричневый]».

Изменить:

Script to change

Кому:

Script changed

Почему:

Ваш предыдущий скрипт проверяет наличие столкновений с одним спрайтом и устанавливает переменную, но если он не касается второго спрайта, он сбрасывается на "false". Это означает, что он сработает, только если ваша овца коснется всех спрайтов.

Редактировать: Это если вы хотите сделать это на платформах. Измените сценарий в спрайте «игры» на:

Script changed

Также измените спрайт на ваших платформах на:

enter image description here

Это сбрасывает датчики. Затем он передает «collisiondetect», и датчики устанавливаются на «true», если происходит столкновение. Сделано в ремиксе.

Ross Webster-Salter
25 апреля 2018 в 06:57
0

Спасибо, я хотел попробовать использовать датчики для достижения чего-то подобного, чтобы избежать очень-очень длинных операторов if. (Это может произойти, если я сделаю сайд-скроллер со многими платформами). Сложно найти правильную логику, но я ценю ваш ответ. Я имел в виду способ включить проверки в саму платформу, несмотря на это. (Чтобы сделать операторы if более управляемыми).

Heath Mitchell
27 апреля 2018 в 14:59
0

Вы можете включить проверки в спрайт платформы. Подожди, скоро покажу.

Heath Mitchell
27 апреля 2018 в 15:13
0

Измените скрипт в вашем игровом спрайте на этот, а спрайт в ваших платформах на этот. Это сбрасывает датчики. Затем он передает «collisiondetect», и датчики устанавливаются на «true», если происходит столкновение. Сделано в ремиксе.