From Test-Scratch-Wiki
Ковзати () сек до X: () Y: () | |
ковзати () сек до x: () y: ()
| |
Категорія | Рух |
Тип | Зчіплюючий |
Блок Ковзати () сек до X: () Y: () належить до блоків руху та зчіплюючих блоків. Він рівномірно рухає спрайт до позиції з указаними координатами X та Y з таким розрахунком, аби досягти цілі за вказаний проміжок часу в секундах. Такого самого ефекту можна досягти, повернувши спрайт у вказаному напрямку та періодично застосовуючи блок Перемістити на () кроків. Блок "Ковзати () сек до X: () Y: ()" зробить те саме більш акуратно, але його проблема в тім, що на час руху спрайта він зупиняє виконання скрипта, запобігаючи будь-яким іншим діям цього спрайта. Отже, інші блоки, як-от Якщо на межі, відбити, не спрацьовуватимуть під час такого руху. До того ж, цей рух можна перервати лише зупинкою скрипта.
Приклади застосування
Типові приклади застосування блоку:
- Риба рухається в наперед заданому акваріумі
завжди ковзати (випадкове від (1) до (2)) сек до x: (випадкове від (-240) до (240)) y: (випадкове від (-100) до (100))
- Спрайт-перешкода створюється й рухається до межі екрану, як у Frogger
коли я отримую [ПускМашини v] сховати задати x (240) повторити до <(граВсе) = [1]> створити клон з [мене v] чекати (3) секунд end коли я починаю як клон показати ковзати (5) сек до x:(-240) y:(значення y) вилучити цей клон
- Об'єкти, які безперешкодно падають
задати y (180) ковзати (1) сек до x:(значення x) y:(-180)
- Спрайт рухається до іншого, який стоїть
ковзати (1) сек до x: ([значення x v] з [спрайт2 v]) y: ([значення y v] з [спрайт2 v])
Порівняння блоків Ковзати () та Перемістити на ()
Обидва наступні скрипти переміщують спрайт рівномірно з лівого кута екрану до правого за 8 секунд.
задати x (-240) повторити (80) перемістити на (6) кроків чекати (0.1) секунд end
задати x (-240) ковзати (8) сек до x:(240) y:(значення y) |
Ковзання із ефектом сповільнення
Блок "Ковзати () сек ..." обчислює рух за лінійною формулою, тобто спрайт не пришвидшується на початку й не сповільнюється наприкінці. Але ефект сповільнення наприкінці, що часто застосовується в графічному дизайні, легко відтворити в Скретч.
коли я отримую [давай v] повторити до <<([abs v] з ((x цілі) - (значення x))) < [.25]> і <([abs v] з ((y цілі) - (значення y))) < [.25]>> змінити x на (((x цілі) - (значення x)) / (2)) змінити y на (((y цілі) - (значення y)) / (2)) end перемістити в x: (x цілі) y: (y цілі)
Можна використати натомість наступний скрипт, який, разом із ефектом сповільнення, дозволяє визначити наперед, скільки часу необхідно спрайту, аби дістатися кінцевої позиції. В цьому прикладі 200 - це значення координати X, якого спрайт має досягти. Число 10 визначає час на досягнення потрібної позиції, з його зростанням цей час зростатиме. Сповільнення наприкінці виходить дуже сильним.
коли я отримую [давай v] повторити до <(округлити (значення x)) = [200]> змінити x на (((200) - (значення x)) / (10)) end