From Test-Scratch-Wiki
Apuntar hacia () | |
apuntar hacia ( v) | |
Categoría | Movimiento |
Forma | Apilable |
El bloque apuntar hacia () es un bloque de movimiento y un bloque apilable que apunta a su objeto hacia el puntero del ratón o el centro del disfraz de otro objeto.
Usos de ejemplo
Al contrario del bloque apuntar en dirección (), que no apunta objetos hacia otros objetos, el bloque apuntar hacia () puede apuntar objetos hacia otros objetos o el puntero del ratón.
Algunos usos comunes para el bloque apuntar hacia ():
- Hacer que un objeto apunte constantemente hacia el ratón
al presionar bandera verde por siempre apuntar hacia (puntero del ratón v) mover (10) pasos end
- Guiar a un objeto hacia dónde moverse
apuntar hacia (Sprite2 v) repetir hasta que <¿tocando (Sprite2 v)?> mover (5) pasos end
- Apuntar hacia un objetivo en el proyecto
al recibir [pista v] apuntar hacia (Tesoro v)
Código alternativo
El bloque puede ser replicado mediante los siguientes códigos, que usan trigonometría:
dar a [delta_x v] el valor (([posición en x v] de (Sprite1 v)) - (posición en x)) dar a [delta_y v] el valor (([posición en y v] de (Sprite1 v)) - (posición en y)) si <(delta_y) = (0)> entonces si <(delta_x) = (0)> entonces apuntar en dirección (-90) si no apuntar en dirección (90) end si no si <(delta_y) < (0)> entonces apuntar en dirección ((180) + ([arctan v] de ((delta_x) / (delta_y)))) si no apuntar en dirección ([arctan v] de ((delta_x) / (delta_y))) end end
apuntar en dirección (([arctan v] de ((([posición en x v] de (Sprite1 v)) - (posición en x)) / (([posición en y v] de (Sprite1 v)) - (posición en y)))) + ((180) * <([posición en y v] de (Sprite1 v)) < (posición en y)>))
Sin embargo, esto requiere más código y reduce la facilidad de lectura.
Sugerencia relacionada
Un bloque relacionado para apuntar a un objeto hacia una cordenada específica ha sido pedido varias veces por los usuarios:[1]
apuntar hacia x: (0) y: (0)::motion
Esto puede hacerse también posicionando un objeto en esa posición, y usando este bloque para apuntar hacia ese objeto, o mediante el siguiente código alternativo:
apuntar hacia x: () y: ()::custom definir apuntar hacia x: (x) y: (y) dar a [delta_x v] el valor ((x) - (posición en x)) dar a [delta_y v] el valor ((y) - (posición en y)) si <(delta_y) = [0]> entonces si <(delta_x) < [0]> entonces apuntar en dirección (-90) si no apuntar en dirección (90) end si no si <(delta_y) < [0]> entonces apuntar en dirección ((180) + ([arctan v] de ((delta_x) / (delta_y)))) si no apuntar en dirección ([arctan v] de ((delta_x) / (delta_y))) end end
Una copia de este código puede ser obtenida aquí.