The Godot Q&A is currently undergoing maintenance!

Your ability to ask and answer questions is temporarily disabled. You can browse existing threads in read-only mode.

We are working on bringing this community platform back to its full functionality, stay tuned for updates.

godotengine.org | Twitter

+1 vote

How to make scroll container do two things

  1. Scroll in the direction the mouse is pointing without a click. so for example, if you move the mouse to the right side of the container, it will scroll to the right

  2. the node inside the scroll container that you are hovering over scale-up. An example in my case would be a panel. So when my mouse hovers over this panel that is inside the scroll container, I want it to scale up. and when the mouse stops hovering over it, it goes back down to its original size. Sorta like a deck of card effects

can someone point me in the right direction, I tried a few things but they didn't work. Thanks

Godot version 3
in Engine by (32 points)

1 Answer

+4 votes
Best answer

Here's how I would accomplish #1:

extends ScrollContainer


const SCROLL_MARGIN = 16  # Unit: px
# Choose a multiple of 60 to prevent stuttering on 60Hz displays.
const SCROLL_SPEED = 120  # Unit: px/sec

onready var scroll_horizontal_float = float(scroll_horizontal)  # Unit: px


func _process(delta):
    var mouse_pos = get_local_mouse_position()

    if is_in_range(mouse_pos.y, 0, rect_size.y):
        if is_in_range(mouse_pos.x, 0, SCROLL_MARGIN):
            scroll_horizontal_float -= SCROLL_SPEED * delta
        elif is_in_range(mouse_pos.x, rect_size.x - SCROLL_MARGIN, rect_size.x):
            scroll_horizontal_float += SCROLL_SPEED * delta

        scroll_horizontal = int(round(scroll_horizontal_float))


func is_in_range(value, lower_bound, upper_bound):
    return lower_bound <= value and value <= upper_bound
by (371 points)
selected by

Thank you this helps alot!

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.