【问题标题】:Unity3D Grid Tilemap - how to catch mouse events? [duplicate]Unity3D Grid Tilemap - 如何捕捉鼠标事件? [复制]
【发布时间】:2018-08-16 12:15:02
【问题描述】:

我有场景、相机、带有网格组件的对象和带有 Tilemap+TilemapRenderer 组件的子对象,然后在 Grid 对象上编写脚本。

我需要在这些对象上捕获鼠标事件(然后检测单元格,我知道该怎么做)。不是 Input.GetMouseButton(0) 在更新生命周期中,我需要事件样式的处理。 我该怎么做呢?

我在 tilemaps/grid 和 MonoBeha:OnMouseDown 方法上尝试过碰撞器,尝试过 IPointerEnterHandler(和另一个表单包)中的方法,以及光线投射。没有任何效果...

我真的很困惑,我应该从Input.GetMouseButton(0)制作我自己的事件系统吗?

【问题讨论】:

  • 你必须附加对撞机。

标签: unity3d events 2d


【解决方案1】:

当用户按下鼠标按钮时调用 OnMouseDown 在 GUIElement 或 Collider 上。

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html

因此,如果您想使用 OnMouseDown,您可以将 BoxCollider2D 添加到您的 Grid 或 Tilemap(如果它最终推开其他对象,您可能需要检查 IsTrigger

我刚刚尝试在 Grid 和 Tilemap 上添加一个碰撞器和一个小脚本,效果很好

public void OnMouseDown()
{ 
    Debug.Log("Boom!");
}

【讨论】:

  • 哦,废话...我用过很少的其他对撞机,但没有使用 BoxCollider2D...谢谢伙计!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多