0

我正在尝试获取一个动态实例化的 kinematicBody2D,其附加了一个区域 2D 以处理鼠标输入/退出输入。我已经用正确的碰撞体创建了我的 2D 区域,并测试了一个类似的碰撞体来检测一些 2d 区域,这工作很愉快,但是,鼠标检测并没有按应有的方式触发该功能。

我不确定为什么它似乎没有检测到我的鼠标。我假设我错误地弄乱了面具,并且不在同一级别,但是查看一些文档并不认为这是一个问题。

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

任何帮助,将不胜感激。

4

1 回答 1

0

要检测 Area 或 KinematicBody 上的鼠标事件,请将input_pickable设置为true并连接到一个或多个提供的信号

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

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)
于 2019-11-19T14:06:17.763 回答