From Test-Scratch-Wiki
Deslizar en () segs a x: () y: () | |
deslizar en () segs a x: () y: () | |
Categoría | Movimiento |
Forma | Apilable |
El bloque deslizar en () segs a x: () y: () es un bloque de movimiento y un bloque apilable que mueve a su objeto a las coordenadas x e y elegidas a lo largo de los segundos especificados. una desventaja del bloque de deslizamiento, de todos modos, es que para el código mientras se mueve el objeto, evitando que puedan suceder más cosas durante este tiempo. Además, un deslizamiento solo puede ser interrumpido por un bloque de parada de código, y el bloque si toca un borde, rebotar no es capaz de cumplir su cometido durante un deslizamiento.
Usos de ejemplo
El bloque se usa cuando se necesita que un objeto se mueva por la pantalla - algunos usos de ejemplo son:
- Un pez moviéndose en una pecera
por siempre deslizar en (número aleatorio entre (1) y (2)) segs a x: (número aleatorio entre (-240) y (240)) y: (número aleatorio entre (-180) y (180)) end
- Se crean objetos de obstáculo y se deslizan hacia el borde de la pantalla, como en Frogger
al recibir [arrancarCoches v] esconder dar a x el valor (240) repetir hasta que <(finDelJuego)=(1)> crear clon de (mí mismo v) esperar (3) segundos end al comenzar como clon mostrar deslizar en (5) segs a x: (-240) y: (posición en y) eliminar este clon
- Objetos cayendo
dar a y el valor (180) deslizar en (1) segs a x: (posición en x) y: (-180)
- Un objeto moviéndose hacia otro
deslizar en (1) segs a x: ([posición x v] de (Sprite2 v)) y: ([posición y v] de (Sprite2 v))
Comparación de los bloques deslizar y mover
El siguiente código usa el bloque mover () pasos para mover progresivamente el objeto de la parte izquierda a la parte derecha de la pantalla en ocho segundos.
dar a x el valor (-240) repetir (80) mover (6) pasos esperar (0.1) segundos end
Este otro código hace lo mismo deslizándose:
dar a x el valor (-240) deslizar en (8) segs a x: (240) y: (posición en y)
Deslizamiento con efecto de suavizado
Los bloques de deslizamiento mueven a un objeto de manera lineal, significando esto que el objeto se mueve a la misma velocidad durante todo el deslizamiento. Sin embargo, es fácil replicar el efecto de suavizado final (ease out, en inglés) usado ampliamente en el diseño gráfico, en el que el objeto se ralentiza al acercarse al final.
Esto se puede conseguir con el siguiente código:
al recibir [moverse v] repetir hasta que <<([valor absoluto v] de ((x del objetivo) - (posición en x))) < (.25)> y <([valor absoluto v] de ((y del objetivo) - (posición en y))) < (.25)>> sumar a x (((x del objetivo) - (posición en x)) / (2)) sumar a y (((y del objetivo) - (posición en y)) / (2)) end ir a x: (x del objetivo) y: (y del objetivo)
En vez de este, también se puede usar el siguiente código, que además de consesguir un efecto de suavizado, permite elegir cuánto debería tardarse en llegar a la posición estipulada:
al recibir [moverse v] repetir hasta que <<(redondear (posición en x)) = (x del objetivo)> y <(redondear (posición en y)) = (y del objetivo)>> sumar a x (((x del objetivo) - (posición en x)) / ((tiempo en s) * (10))) sumar a y (((y del objetivo) - (posición en y)) / ((tiempo en s) * (10))) end ir a x: (x del objetivo) y: (y del objetivo)