Change Y by ()
2.0 Change Y by ().png
Category Motion
Type Stack
The change y by () block is a Motion block and a Stack block. The block moves its sprite's Y position by the specified amount.

Example Uses

Often in games, the player controls a sprite and moves it around, such as with velocity. In this way, the change y by () block (and the change x by () block) can become very useful. The y axis ranges from -180 to 180.

  • In this script, which could control a paddle in Pong, a yVelocity variable controls the sprite's up and down movement. This allows the sprite to accelerate and decelerate.
set [yVelocity v] to [0]
forever
    if <key [up arrow v] pressed?> then
        change [yVelocity v] by (2)
    end
    if <key [down arrow v] pressed?> then
        change [yVelocity v] by (-2)
    end
    change y by (yVelocity)
    if <(yVelocity) > [0]> then
        change [yVelocity v] by (-1)
    end
    if <(yVelocity) < [0]> then
        change [yVelocity v] by (1)
    end
end
  • This block is also commonly used in jump scripts, as shown below:
repeat (8)
    change y by (5)
    wait (0.1) secs
    end
    wait (1) secs
    repeat until <touching [Ground v]>
    change y by (-5)
    wait (0.1) secs
    end

However, smoother jumping can be achieved by using this script:

glide (0.5)secs to x:(x position) y:((y position)+(40))
wait (1) secs
repeat until <touching [Ground v]
    glide (0.125)secs to x:(x position) y:((y position)-(10))
end

Workaround

Main article: List of Block Workarounds

This block can be replicated with the following scripts:

set y to ((y position) + (change))

go to x: (x position) y: ((y position) + (change))

define change y by (value)
//run without screen refresh
set [pastDirection v] to (direction)
point in direction (0 v)
move (value) steps
point in direction (pastDirection)

See Also