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

Godot引擎中如何检测自定义形状是否被鼠标点击?

你的实现思路是完全可行的,Area2D配合自定义形状的CollisionPolygon2D是Godot中检测不规则2D区域点击的标准方案,功能未生效可按以下步骤逐一排查:

  • 确认信号绑定正确:Area2D或者其子节点CollisionPolygon2D的input_event信号已经绑定到上述脚本的对应函数上,绑定过程中没有修改函数名导致无法触发。
  • 检查节点属性配置:确保Area2D的monitoring、input_pickable(Godot 4.x对应pickable)属性为开启状态,CollisionPolygon2D的disabled属性未勾选,碰撞多边形顶点完全覆盖你需要检测的钢琴键区域、没有位置错位。
  • 排除节点遮挡:如果场景中存在优先级更高的Control类节点、或者其他可拾取的2D节点覆盖在当前钢琴键区域上方,会拦截点击事件导致信号无法触发,可临时隐藏上层节点测试。
  • 核对节点路径:先注释代码中控制RadioCPressed显示隐藏的逻辑,只保留print输出,测试点击时控制台是否有对应打印,如果有输出说明信号触发正常,问题出在RadioCPressed的节点路径填写错误。

可参考优化后的代码,避免误响应其他鼠标按键:

# Godot 4.x 版本
func _on_area_2d_input_event(viewport, event, shape_idx):
    if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
        if event.is_pressed():
            print("Object Clicked")
            $"RadioCPressed".show()
        else:
            $"RadioCPressed".hide()

如果是Godot 3.x版本,将MOUSE_BUTTON_LEFT替换为BUTTON_LEFT即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:04