【发布时间】:2020-03-13 07:34:20
【问题描述】:
我想知道在 2D 项目上用鼠标点击了哪个游戏对象
我用过
void Update()
{
if (Input.GetMouseButtonDown(0))
{
clickTime = DateTime.Now;
mousePosition = Input.mousePosition;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
if (hit != null && hit.collider != null)
{
}
}
}
但它永远不会进入第二个 if 条件
编辑:我正在编写一个脚本并使用 GameObject.FindGameObjectWithTag() 从那里访问所有游戏对象,据我所知,这就是为什么主脚本中的对撞机代码没有触发的原因。 我添加了我的代码在 GameObject 中的屏幕截图
【问题讨论】:
-
使用调试工具绘制光线并查看光线的走向
-
@BugFinder 我做了。无论是按钮还是图像都无法从点击中获取有关单击的游戏对象的任何信息
-
您是否在游戏对象上设置了碰撞器??
-
hit != null将始终为true,因为它是struct。所以看起来hit.collider永远不是true.. 你可能在你试图点击的对象上没有任何碰撞器 -
@eomer 您的编辑没有解释任何内容...使用
GameObject.FindGameObjectWithTag()是完全独立的,与您的Physics2D.Raycast无关...如果您认为这是必要的,请添加完整你如何以及在哪里使用你的东西的脚本
标签: unity3d gameobject