在 Godot 中检测鼠标移动和方向

问题描述 投票:0回答:1

我正在为

Godot 3.5
中的游戏制作 settings menu,其中有一个用于体积的
progress bar
节点。 我希望玩家拖动鼠标来调整音量,如下所示: image

但问题是我不知道如何检测鼠标移动的位置和移动量来相应地改变进度条的值。 我想知道是否有一种方法可以在鼠标进入节点时检测和测量鼠标移动。

我尝试使用

get_global_mouse_position()
,将其存储在变量中,使用计时器进行延迟,然后再次检查它,然后减去两者,我以为我会得到鼠标移动,但它不起作用,并且进度条保持不变。 虽然,即使它有效,它也不会顺利或实时变化......

希望对您有所帮助, 谢谢!

progress-bar mouse godot godot3
1个回答
0
投票

我建议使用

HSlider
进行音量设置。


既然你想用

ProgressBar
...

执行此操作的一种方法是在附加到 _gui_input

 的脚本中使用 
ProgressBar
:

func _gui_input(event:InputEvent) -> void:
    var mouse_event := event as InputEventMouse
    if mouse_event != null:
        if mouse_event.button_index == BUTTON_LEFT and mouse_event.pressed:
            prints(mouse_event.position)

在这里,您得到的

position
将位于
ProgressBar
的局部空间中。


我们可以根据

position
width
(
rect_size.x
) 计算值:

 position       value - min_value
---------- = -----------------------
   width      max_value - min_value

=>

                          position
 (max_value - min_value) ---------- = value - min_value
                            width


=>

value = min_value + (max_value - min_value) * position / width

注意:请注意,上述计算没有考虑边界。

© www.soinside.com 2019 - 2024. All rights reserved.