Повернуться к () — это Блок движения, по форме Обычный блок. Он поворачивает свой спрайт или клон к указателю мыши или к центру костюма другого спрайта.
Примеры использования
В отличие от блока Повернуться в направлении () который не поворачивает спрайт к другому спрайту, блок Повернуться к () может поворачивать спрайт к другому спрайту или к указателю мыши.
Некоторые частые использования блока Повернуться к ():
- Направлять спрайт в сторону указателя мыши
когда щёлкнут по зелёному флагу
повторять всегда
повернуться к (указатель мыши v)
идти (10) шагов
end
- Указать спрайту, куда ему двигаться
повернуться к (Спрайт 2 v)
повторять пока не <касается (Спрайт 2 v)?>
идти (5) шагов
end
когда я получу [Подсказка v]
повернуться к (Сокровище v)
Обходной путь
Этот блок может быть произведён с блоками, в которых используется тригонометрия:
задать [delta_x v] значение (([положение x v] от (Спрайт 1 v)) - (положение x))
задать [delta_y v] значение (([положение y v] от (Спрайт 1 v)) - (положение y))
если <(delta_y) = [0]> , то
если <(delta_x) < [0]> , то
повернуться в направлении (-90)
иначе
повернуться в направлении (90)
end
иначе
если <(delta_y) < [0]> , то
повернуться в направлении ((180) + ([atan v] от ((delta_x) / (delta_y))))
иначе
повернуться в направлении ([atan v] от ((delta_x) / (delta_y)))
end
end
повернуться в направлении (([atan v] от ((([положение x v] от (Спрайт 1 v)) - (положение x)) / (([положение y v] от (Спрайт 1 v)) - (положение y)))) + ((180) * <([положение y v] от (Спрайт 1 v)) < (положение y)>)
Однако это требует больше кода и снижает его читабельность.
Предложения
Скретчеры часто предлагали блок который поворачивает спрайт на определённую координату:[1]
повернуться к точке x: (0) y: (0):: motion
Это можно сделать, поместив спрайт в это место и используя блок Повернуться к (), или определив и используя этот пользовательский блок:
повернуться к точке x: () y: ()
определить повернуться к точке x: (x) y: (y)
задать [delta_x v] значение ((x) - (положение x))
задать [delta_y v] значение ((y) - (положение y))
если <(delta_y) = [0]> , то
если <(delta_x) < [0]> , то
повернуться в направлении (-90)
иначе
повернуться в направлении (90)
end
иначе
если <(delta_y) < [0]> , то
повернуться в направлении ((180) + ([atan v] от ((delta_x) / (delta_y))))
иначе
повернуться в направлении ([atan v] от ((delta_x) / (delta_y)))
end
end
См. также
Источники
Cookie-файлы помогают нам предоставлять наши услуги. Используя наши сервисы, вы соглашаетесь с использованием cookie-файлов.