【问题标题】:How to detect if a custom shape has been clicked in godot?如何检测是否在godot中单击了自定义形状?
【发布时间】:2021-11-05 18:52:24
【问题描述】:

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

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()

【问题讨论】:

    标签: godot gdscript


    【解决方案1】:

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


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

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

    【讨论】:

    • 绝对传奇,结果我需要将 TextureRect 的 mouse_filter 设置为忽略(以及将括号添加到 is_pressed())。谢谢!
    猜你喜欢
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多