Godot 执行实例化对象区域2D';我们没有发现老鼠

Godot 执行实例化对象区域2D';我们没有发现老鼠,godot,gdscript,Godot,Gdscript,我试图获得一个动态实例化的kinematicBody2D,其中附加了一个2D区域来处理鼠标输入/输出。我已经用正确的碰撞体创建了我的区域2D,并测试了一个类似的碰撞体来检测一些区域2D,这很好地工作,但是,鼠标检测并没有触发应有的功能 我不确定为什么它似乎没有检测到我的鼠标。我假设我弄错了面具,它不是在同一个层次上,但是看一些文档,这不建议是一个问题 我不确定要附加什么代码,因为此时它还没有真正编码 任何帮助都将不胜感激。要检测区域或运动学体上的鼠标事件,请设置为true,并连接到一个或多个 k

我试图获得一个动态实例化的kinematicBody2D,其中附加了一个2D区域来处理鼠标输入/输出。我已经用正确的碰撞体创建了我的区域2D,并测试了一个类似的碰撞体来检测一些区域2D,这很好地工作,但是,鼠标检测并没有触发应有的功能

我不确定为什么它似乎没有检测到我的鼠标。我假设我弄错了面具,它不是在同一个层次上,但是看一些文档,这不建议是一个问题

我不确定要附加什么代码,因为此时它还没有真正编码


任何帮助都将不胜感激。

要检测区域或运动学体上的鼠标事件,请设置为
true
,并连接到一个或多个

kineticbody2d
Area2D
都继承自,因此它们都可以处理鼠标输入。这意味着您无需将
区域添加到
KinematicBody
中,除非检测点击的区域需要与检测碰撞的区域不同(例如,只有较大对象的一小部分可点击)

下面是如何通过一些碰撞形状在
运动学体上检测鼠标事件的方法:

func _ready():
    input_pickable = true
    connect("mouse_entered", self, "_on_mouse_entered")
    connect("mouse_entered", self, "_on_mouse_entered")
    connect("input_event", self, "_on_input_event")

func _on_mouse_entered():
    print("mouse entered")

func _on_mouse_exited():
    print("mouse exited")

func _on_input_event(viewport, input_event, shape_idx):
    var mouse_event = input_event as InputEventMouseButton
    if mouse_event:
        prints("Mouse button clicked:", mouse_event.button_index)

你好@rcorre,谢谢你的意见。如果我在调用动态实例化对象的场景中进行测试,这非常有效,但是,使用相同的代码,但是嵌入到另一个场景中,这种交互不再有效。您能提供一个解决方案吗?如果没有更多的细节,任何人都很难猜测到底是什么问题。是简化版本的存储库。当动态实例化场景自身运行时,您将能够看到(希望如此),这是可行的,但当实例化时,这不再发生。@notme21您的示例中有一个完全不同的问题。您添加的
面板
正在捕获鼠标输入。你可能想问一个单独的问题,因为不清楚你为什么在那里有
面板,或者你希望它做什么。该面板正在捕获鼠标输入,这就是你的实例化场景中的函数没有启动的原因。