C# RaycastAll返回了一些我不理解的东西

C# RaycastAll返回了一些我不理解的东西,c#,unity3d,raycasting,C#,Unity3d,Raycasting,我试着用一个可移动的物体做一个拖放区域。 我的设置如下所示: WhiteA是RedB的父项,它们都有BoxCollide R2D,包括GreenC。对象GreenC和WhiteA上有RigidBody2D组件,GreenC在鼠标向上时从其定位点进行光线投射,并列出光线投射命中的项目 如果我将GreenC拖动到RedB上,RaycastAll将返回:GreenC-GreenC-WhiteA而不是:GreenC-RedB 如果我将RedB移动到WhiteA内部,使其重叠,仍然保持层次结构,那么结果

我试着用一个可移动的物体做一个拖放区域。 我的设置如下所示:

WhiteARedB的父项,它们都有BoxCollide R2D,包括GreenC。对象GreenCWhiteA上有RigidBody2D组件,GreenC在鼠标向上时从其定位点进行光线投射,并列出光线投射命中的项目

如果我将GreenC拖动到RedB上,RaycastAll将返回:GreenC-GreenC-WhiteA而不是:GreenC-RedB

如果我将RedB移动到WhiteA内部,使其重叠,仍然保持层次结构,那么结果将是:GreenC-GreenC-WhiteA-WhiteA而不是:GreenC-RedB-WhiteA

我不明白为什么它不能识别RedB,它上面也有一个r2d。只有当RedB有一个要修改的RigidBody2D组件时,它才起作用

编辑:为Bart的请求添加了代码

private Vector2 MousePos;

void OnMouseDrag () {
    
    MousePos = Camera.main.ScreenToWorldPoint (new Vector2 (Input.mousePosition.x, Input.mousePosition.y ));
    transform.position = new Vector3 (MousePos.x, MousePos.y,  transform.position.z);
}

void OnMouseUp(){
    foreach (Transform obj in HoveringOver ()) {
        print (obj.name);
    }
}

public List<Transform> HoveringOver(){
    
    List<RaycastHit2D > ObjectsHit = (Physics2D.RaycastAll(transform.position,  transform.TransformDirection (Vector3.down), 0)).ToList();
    List<Transform> AllObjectsHit = new List<Transform>();
    
    foreach (RaycastHit2D target in ObjectsHit) {
        AllObjectsHit.Add(target.transform);
    }
    
    return AllObjectsHit;
}
专用矢量2鼠标;
void OnMouseDrag(){
MousePos=Camera.main.ScreenToWorldPoint(新矢量2(Input.mousePosition.x,Input.mousePosition.y));
transform.position=新矢量3(MousePos.x、MousePos.y、transform.position.z);
}
void OnMouseUp(){
foreach(HoveringOver()中的转换对象){
打印(对象名称);
}
}
公共列表悬停在()上{
List ObjectsHit=(Physics2D.RaycastAll(transform.position,transform.TransformDirection(Vector3.down),0)).ToList();
List AllObjectsHit=new List();
foreach(ObjectsHit中的RaycastHit2D目标){
AllObjectsHit.Add(target.transform);
}
返回AllObjectsHit;
}

请出示您的代码。请出示您的代码。