C# RaycastAll返回了一些我不理解的东西
我试着用一个可移动的物体做一个拖放区域。 我的设置如下所示: WhiteA是RedB的父项,它们都有BoxCollide R2D,包括GreenC。对象GreenC和WhiteA上有RigidBody2D组件,GreenC在鼠标向上时从其定位点进行光线投射,并列出光线投射命中的项目 如果我将GreenC拖动到RedB上,RaycastAll将返回:GreenC-GreenC-WhiteA而不是:GreenC-RedB 如果我将RedB移动到WhiteA内部,使其重叠,仍然保持层次结构,那么结果将是:GreenC-GreenC-WhiteA-WhiteA而不是:GreenC-RedB-WhiteA 我不明白为什么它不能识别RedB,它上面也有一个r2d。只有当RedB有一个要修改的RigidBody2D组件时,它才起作用 编辑:为Bart的请求添加了代码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内部,使其重叠,仍然保持层次结构,那么结果
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;
}
请出示您的代码。请出示您的代码。