Unity raycast 未检测到之前已检测到的对象
Posted
技术标签:
【中文标题】Unity raycast 未检测到之前已检测到的对象【英文标题】:Unity raycast not detecting an object which has already been detected by it before 【发布时间】:2020-11-14 00:47:04 【问题描述】:using UnityEngine;
public class Shoot: MonoBehaviour
public Camera cam;
void Update()
if (Input.GetButtonDown("Fire1"))
shooot();
void shooot()
RaycastHit hit;
if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit))
Debug.Log(hit.transform.name);
其他对象有一个盒子碰撞器和刚体。 Raycast 检测到“Cube1”,并且在我对其他物体进行 raycast 拍摄然后再次在“Cube1”处拍摄 raycast 之后,此代码没有检测到它。为什么?
【问题讨论】:
您尝试debugging your code 并查看该方法是否已执行?如果你说它没有检测到它……它是检测到其他东西还是什么也没检测到? 我正在使用 Probuilder 构建我的环境。我认为这就是问题所在。我确实尝试调试我的代码。如果我对已经检测到的东西进行光线投射,它不会打印任何东西。谢谢! 不,不是probuilder造成的。我查过了! 如果调试显示什么都没有打印,下一个调试是添加行 debug.log("shooot was called");就在shoot()的函数调用之前;因为输入可能有问题? 能否在测试结束时显示完整的控制台输出? 【参考方案1】:在 Unity 编辑器的控制台中按折叠以切换打印和日志应堆叠(折叠)的位置,它仍应记录两次,但右侧的计数器不会显示为两个单独的日志,而是增加显示有多少记录相同的相同行的次数。
【讨论】:
【参考方案2】:Unity 会记录所有内容。只是如果您多次记录相同的输出,Unity 会折叠成一行。您可以通过输出右侧指示的数字看到这一点。
(图片取自https://learn.unity.com/tutorial/introduction-to-the-console-window#5f68b4eeedbc2a002022b83d)
如果您切换标记的“折叠”按钮,它将显示每个输出。
【讨论】:
以上是关于Unity raycast 未检测到之前已检测到的对象的主要内容,如果未能解决你的问题,请参考以下文章
Unity (C#) - 如何在销毁/重生系统中挑选出被 Raycast 检测到的 GameObject