我正在尝试获取一个动态实例化的 kinematicBody2D,其附加了一个区域 2D 以处理鼠标输入/退出输入。我已经用正确的碰撞体创建了我的 2D 区域,并测试了一个类似的碰撞体来检测一些 2d 区域,这工作很愉快,但是,鼠标检测并没有按应有的方式触发该功能。
我不确定为什么它似乎没有检测到我的鼠标。我假设我错误地弄乱了面具,并且不在同一级别,但是查看一些文档并不认为这是一个问题。
我不确定要附加什么代码,因为此时它还没有真正编码。
任何帮助,将不胜感激。
要检测 Area 或 KinematicBody 上的鼠标事件,请将input_pickable设置为true
并连接到一个或多个提供的信号。
KinematicBody2D
并且Area2D
都继承自CollisionObject2D
,因此它们都可以处理鼠标输入。这意味着您不需要添加一个Area
,KinematicBody
除非检测点击的区域需要与检测碰撞的区域不同(例如,只有一小部分较大的对象是可点击的)。
KinematicBody
以下是使用 some检测 a 上的鼠标事件的方法CollisionShape
:
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)