| Distance to () | |
distance to ( v) | |
| Category | Sensing |
| Type | Reporter |
| Introduced in | 11Oct03 (0.x) |
The Distance to () block is a Sensing block and a Reporter block. The block reports the Euclidean distance, in pixels, between it and the mouse-pointer or a specified sprite's costume center, even if the specified sprite is hidden.

If there is nothing in the drop-down insert of the block, or if a sprite that was deleted is still in the drop-down insert, it reports the distance as 10,000. In v432 of Scratch 2.0 and earlier, it reported 0 instead, but this was changed in order to maintain compatibility with Scratch 1.4.[1]
This block is case-sensitive.
Example Uses
As this block can give distances between objects, it is very useful in projects that require a great deal of careful sensing and movement.
Some common uses for the Distance to () block:
- Estimating when collisions will occur
if <(distance to (snowball v)) < (40)> then say [Watch out!] wait until <touching (snowball v)?> say [] // stop saying the message stop [all v]
- Helping determine how long it should take a sprite to move somewhere, judging from the distance
set [movements v] to ([ceiling v] of ((distance to (meteor v)) / (10))) // "movements" being the number of 10-pixel motions to reach the meteor
- Determining how far a rocket should fire
set [real distance v] to (join ((distance to (asteroid v)) * (10000)) [ kilometers]) // for relating pixel distance to real life
- Detecting distances from an invisible sprite and displaying the score as a game
change [score v] by ((1800) - ((10) * (distance to (bullseye v))))
- Making a variable change when you move the sprite around from another sprite
forever set [safety v] to ((100) - ((distance to (house v)) / (3))
Workaround
- Main article: List of Block Workarounds
This block can be replicated with the following code:
([sqrt v] of (((([x position v] of (Target Sprite v)) - (x position)) * (([x position v] of (Target Sprite v)) - (x position))) + ((([y position v] of (Target Sprite v)) - (y position)) * (([y position v] of (Target Sprite v)) - (y position))))
This can be visualized as a right-angled triangle. The Pythagorean theorem can be used to find the length of the hypotenuse.
Related Suggestion
Some Scratchers want a block that gives the distance to any location, not just a sprite.[2] It would be like this:
(distance to x: () y: ():: sensing)
However, it can be replicated with a similar workaround:
([sqrt v] of ((((target x) - (x position)) * ((target x) - (x position))) + (((target y) - (y position)) * ((target y) - (y position)))))
Alternatively, a sprite can be moved to the wanted location:
//Inside sprite1: broadcast (move v) and wait set [result v] to (distance to (Move sprite v)) //Inside Move sprite: when I receive [move v] go to x: (target x) y: (target y)
| If the sprite needs to move to an off-screen target position, see How to Go Off the Screen Edge. |