如何检测是否在 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
.
如果是否有其他内容获取输入,您还需要考虑其他内容。 一个常见的情况是人们会使用 ColorRect
或 TextureRect
作为背景,并将 mouse_filter
设置为停止(默认)。即使在后台,也需要设置mouse_filter
为Ignore,因为Controls优先于其他节点进行输入。见Using InputEvent。
是否可以检查自定义形状是否被点击。例如,我将如何检查是否单击了不规则形状的钢琴键。我假设你会制作一个 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
.
如果是否有其他内容获取输入,您还需要考虑其他内容。 一个常见的情况是人们会使用 ColorRect
或 TextureRect
作为背景,并将 mouse_filter
设置为停止(默认)。即使在后台,也需要设置mouse_filter
为Ignore,因为Controls优先于其他节点进行输入。见Using InputEvent。