c# - 为什么 Unity 中的光线投射在靠近物体时不起作用?
问题描述
我想知道是什么导致了这种情况。我正在从相机(在我用鼠标移动的对象上)向托盘投射光线。当托盘足够近时,光线会变成红色,这意味着它们正在撞击某物。我的任务是检查相机和托盘之间是否有东西。请解释一下它是如何工作的。
我的部分代码:
bool[] hits = new bool[aug_pts.Count];
for (int i = 0; i < aug_pts.Count; i++)
{
RaycastHit hitInfo;
bool hit;
float distance = Vector3.Distance(this.transform.position, aug_pts[i]);
Vector3 direction = aug_pts[i] - this.transform.position;
hit = Physics.Raycast(this.transform.position, direction, out hitInfo, distance);
if (hit && hitInfo.collider.name != "wood_pal")
{
Debug.DrawLine(this.transform.position, aug_pts[i], Color.red);
hits[i] = true;
}
else
{
hits[i] = false;
Debug.DrawLine(this.transform.position, aug_pts[i], Color.green);
}
}
谢谢你。
解决方案
我发现了一个问题。这个问题我被关闭了。光线击中一个物体,它是用相机。需要更正的是:
if(hit && hitInfo.collider.name != "wood_pal" && hitInfo.collider.name != "my_object")
{
...
}
推荐阅读
- mysql - 类型错误:尝试使用 sequelize 将 GeoJSON 点保存到 MySQL 时无法读取未定义的属性“长度”
- r - 错误:分配的数据`distHaversine(dtrav)`必须与现有数据兼容
- html - 不带标签的样式单选输入
- javascript - JS中的重置功能不断重新加载页面
- sql - 请解释此查询如何与 "WHERE and AND" 一起使用。提前致谢
- c - 如何配置 GCC 以自动包含头文件?
- linux - 如何避免内核线程和定时器对进程的影响?
- fonts - 检测阿拉伯字体
- laravel - 我在关系中使用 select 语句时遇到问题,如何在此语句中选择 images.path 列
- counter - 在 eBPF 中强制跟踪连接的最大阈值