如何检测是否在 godot 中单击了自定义形状?

How to detect if a custom shape has been clicked in godot?

是否可以检查自定义形状是否被点击。例如,我将如何检查是否单击了不规则形状的钢琴键。我假设你会制作一个 2D 区域并制作一个具有你的形状的 2D 碰撞多边形,作为 child,然后你会向脚本发送一个信号,如果它们被输入,脚本将检查是否这是一个点击并做出相应的回应。我试过了,但没有用。下面是我的代码。非常感谢任何帮助!

func _on_Collision_input_event(viewport, event, shape_idx):
    if event is InputEventMouseButton:
        if event.is_pressed:
            $"RadioCPressed".show()
            print("Object Clicked")
        else:
            $"RadioCPressed".hide()

你打错了,应该是event.is_pressed()而不是event.is_pressed。它一定是在 运行 时间给你一个错误。


假设它没有给你一个错误,这可能意味着该方法根本没有 运行ning(你可以在方法的开头使用打印或断点来确认)。另外,请仔细检查您是否连接了信号。并确保区域 input_pickable 设置为 true.

如果是否有其他内容获取输入,您还需要考虑其他内容。 一个常见的情况是人们会使用 ColorRectTextureRect 作为背景,并将 mouse_filter 设置为停止(默认)。即使在后台,也需要设置mouse_filter为Ignore,因为Controls优先于其他节点进行输入。Using InputEvent