Unity raycast 未检测到之前已经检测到的对象

Unity raycast not detecting an object which has already been detected by it before

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”,在我向其他物体发射射线然后再次向“Cube1”发射射线后,此代码未检测到它。为什么?

在 Unity Editor 的控制台中按 Collapse 以切换打印和日志应该堆叠(折叠)或不堆叠的位置,它仍然应该记录两次,但不是显示为两个单独的日志,而是右侧的计数器增加显示记录了多少次相同的行。

Unity 会记录所有内容。只是如果您多次记录相同的输出,Unity 会折叠成一行。您可以通过输出右侧指示的数字看到这一点。

(图片取自https://learn.unity.com/tutorial/introduction-to-the-console-window#5f68b4eeedbc2a002022b83d

如果您切换标记的“折叠”按钮,它将显示每一个输出。