为什么Unity中的raycast在靠近对象时不工作?

问题描述 投票:0回答:1

我想知道是什么原因导致这种情况。我从摄像头(在我用鼠标移动的对象上)向托盘进行射线广播。当托盘足够近的时候,光线就会变成红色,这意味着它们正击中某个物体。我的任务是检查摄像机和托盘之间是否有东西。请给我解释一下它是如何工作的。

GIF可视化我的问题

我的部分代码。

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);
            }
        }

谢谢你,我想知道是什么原因造成这种情况

c# unity3d raycasting
1个回答
1
投票

我发现了一个问题。这个问题我的问题是封闭的。射线被击中的对象,这是与相机。需要纠正的是。

if(hit && hitInfo.collider.name != "wood_pal" && hitInfo.collider.name != "my_object")
{
...
}
© www.soinside.com 2019 - 2024. All rights reserved.