You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Godot中应使用哪个节点检测屏幕鼠标或触摸拖拽事件?

实现拖拽旋转相机的Control节点方案

你不需要依赖特殊的Control节点,用Panel或者ColorRect就能完美实现需求:

  • 这两个节点都能接收鼠标、触摸输入事件,只要把它们设置为全屏大小,再调整成完全透明(ColorRect把颜色的alpha值设为0,Panel通过主题设置透明背景),就不会遮挡现有UI,同时能捕捉到整个屏幕的拖拽操作。

具体操作步骤:

  1. 将Panel/ColorRect放在UI层级的最底层,确保它覆盖整个屏幕区域。
  2. 给节点添加脚本,通过_gui_input函数处理拖拽逻辑:
    var is_dragging = false
    var last_input_pos = Vector2.ZERO
    
    func _gui_input(event):
        # 处理鼠标拖拽
        if event is InputEventMouseButton:
            is_dragging = event.pressed and event.button_index == MOUSE_BUTTON_LEFT
            if is_dragging:
                last_input_pos = event.position
        elif event is InputEventMouseMotion and is_dragging:
            var delta = event.position - last_input_pos
            # 根据偏移量调整相机旋转,参数0.01是灵敏度,可自行修改
            get_node("你的相机路径").rotate_y(-delta.x * 0.01)
            get_node("你的相机路径").rotate_x(-delta.y * 0.01)
            last_input_pos = event.position
        # 处理触摸拖拽
        elif event is InputEventScreenDrag:
            var delta = event.relative
            get_node("你的相机路径").rotate_y(-delta.x * 0.01)
            get_node("你的相机路径").rotate_x(-delta.y * 0.01)
    
  3. 根据你的场景调整相机路径和旋转灵敏度,适配操作手感。

如果你的3D视图是嵌入在UI里的Viewport,也可以直接给ViewportContainer绑定输入事件,逻辑和上面一致。

内容的提问来源于stack exchange,提问作者NewToPi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:24:58