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。使用图层蒙版
参见:
如果这不是您要查找的内容,请提供更多信息和问题的屏幕截图。
有很多这样的问题,但我没有找到有效的解决方案。
我想点击碰撞体后面的物体,这是我的代码:
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。使用图层蒙版
参见:
如果这不是您要查找的内容,请提供更多信息和问题的屏幕截图。