Point Towards () Category Motion Type Stack

The Point Towards () block is a Motion block and a Stack block. The block points its sprite towards the mouse-pointer or another sprite depending on its costume center; this changes the sprite's direction and rotates the sprite.

Example Uses

The Point in Direction () block does not point sprites at specific objects; the Point Towards () block, however, can point sprites at other sprites or the mouse pointer.

Some common uses for the Point Towards () block:

• Continuously making a sprite point towards the mouse
when gf clicked
forever
point towards [mouse-pointer v]
move (10) steps
• Guiding a sprite on where to move
point towards [Sprite2 v]
repeat until <touching [Sprite2 v]?>
move (5) steps
• Pointing towards a goal in the project
point towards [Treasure v]

Workaround

Main article: List of Block Workarounds

This block can be replicated with the following code, which uses trigonometry:

set [delta_x v] to (([x position v] of [sprite 1 v]) - (x position))
set [delta_y v] to (([y position v] of [sprite 1 v]) - (y position))
if <(delta_y) = [0]> then
if <(delta_x) < [0]> then
point in direction (-90 v)
else
point in direction (90 v)
end
else
if <(delta_y) < [0]> then
point in direction ((180) + ([atan v] of ((delta_x) / (delta_y))))
else
point in direction ([atan v] of ((delta_x) / (delta_y)))
end
end

However, this requires a lot more code and is not recommended because it decreases the readability of your code.

Related Suggestion

A related block has been asked for by Scratchers: point towards x: (0) y: (0)::motion[1]
It would be used to point the sprite at a specific pixel.

However, this can be done by placing a sprite at that location and using the Point Towards () block or by using this code:

define point towards x:(x) y:(y)
set [delta_x v] to ((x) - (x position))
set [delta_y v] to ((y) - (y position))
if <(delta_y) = [0]> then
if <(delta_x) < [0]> then
point in direction (-90 v)
else
point in direction (90 v)
end
else
if <(delta_y) < [0]> then
point in direction ((180) + ([atan v] of ((delta_x) / (delta_y))))
else
point in direction ([atan v] of ((delta_x) / (delta_y)))
end
end

And then

point towards x:() y:() :: custom

A copy of this code may be obtained here.

Example Uses

when gf clicked point towards x:(93) y:(102) :: custom or when I receive[turn v] point towards x:(x) y:(y) :: custom