Unity 使用 Raycast 单击其他对象后面的对象

Unity click an object behind other using Raycast

有很多这样的问题,但我没有找到有效的解决方案。

我想点击碰撞体后面的物体,这是我的代码:

    void Update () {
    RaycastHit hit;
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    if (Physics.Raycast(ray, out hit))
    {
        Debug.Log(hit.transform.name);
    }
}

我将这段代码放在附加到第一个对象的脚本中,但永远不会调用调试日志。 有什么想法吗?

如果我理解你的问题,你想点击黄色球体(见图)并想要白色立方体的名称?

有两种可能的方法:

1.忽略光线投射层

你可以给黄色球体统一标准层"Ignore Raycast":

那么你的代码应该可以工作(我添加了鼠标左键点击)

    void Update()
{
    if (Input.GetMouseButtonDown(0)) // Click on left mouse button
    {
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit))
        {
            Debug.Log(hit.transform.name);
        }
    }
}

2。使用图层蒙版

参见:

如果这不是您要查找的内容,请提供更多信息和问题的屏幕截图。