我正在为
Godot 3.5中的游戏制作
settings menu
,其中有一个用于体积的 progress bar
节点。
我希望玩家拖动鼠标来调整音量,如下所示:
但问题是我不知道如何检测鼠标移动的位置和移动量来相应地改变进度条的值。 我想知道是否有一种方法可以在鼠标进入节点时检测和测量鼠标移动。
我尝试使用
get_global_mouse_position()
,将其存储在变量中,使用计时器进行延迟,然后再次检查它,然后减去两者,我以为我会得到鼠标移动,但它不起作用,并且进度条保持不变。
虽然,即使它有效,它也不会顺利或实时变化......
希望对您有所帮助, 谢谢!
我建议使用
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
注意:请注意,上述计算没有考虑边界。