我想要检测鼠标在Area2D内部的点击(和按住),然后检测鼠标在Area2D内部或外部的释放。
这是我到目前为止所知道的:
extends Area2D #PickArea
func _input_event(viewport, event, shape_idx):
if event is InputEventMouseButton and event.button_index == BUTTON_LEFT:
if event.is_pressed():
print("picked")
else:
print("released") ## here be dragons. release only detected inside Area2D上面的方法可以工作,但它只检测Area2D内部的鼠标释放。如何在Area2D之外检测鼠标释放?
以下是节点结构:

发布于 2021-10-08 16:55:33
您可以在_input中获取Area2D之外的输入事件。使用它来获取发行版:
func _input(event: InputEvent) -> void:
if (
event is InputEventMouseButton
and event.button_index == BUTTON_LEFT
and not event.is_pressed()
):
print("released")然而,你只有在得到媒体的支持后才会想要得到它,对吗?因此,让我们在_ready和_input上禁用_input,并在_input_event上启用它
extends Area2D
func _ready():
set_process_input(false)
func _input_event(viewport: Object, event: InputEvent, shape_idx: int) -> void:
if (
event is InputEventMouseButton
and event.button_index == BUTTON_LEFT
and event.is_pressed()
):
print("picked")
set_process_input(true)
func _input(event: InputEvent) -> void:
if (
event is InputEventMouseButton
and event.button_index == BUTTON_LEFT
and not event.is_pressed()
):
print("released")
set_process_input(false)这应该能起到作用。
https://stackoverflow.com/questions/69498580
复制相似问题