【问题标题】:Unity raycast not detecting an object which has already been detected by it beforeUnity raycast 未检测到之前已检测到的对象
【发布时间】: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()的函数调用之前;因为输入可能有问题?
  • 能否在测试结束时显示完整的控制台输出?

标签: c# unity3d raycasting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 2021-03-21
      • 2020-10-17
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多