RaycastAll会返回一些我不理解的东西

时间:2015-08-10 14:52:54

标签: c# unity3d raycasting

我正在尝试使用可移动物体制作拖放区域。 我的设置看起来像这样:

enter image description here

WhiteA RedB 的父级,两者都有 BoxCollider2D ,包括 GreenC 。对象 GreenC WhiteA 上有 RigidBody2D 组件, GreenC 会在鼠标向上从其锚点投射光线,并列出 RaycastAll 命中的项目。

如果我将 GreenC 拖过 RedB ,则RaycastAll 将返回: GreenC - GreenC - WhiteA 而不是:< strong> GreenC - RedB 。

如果我在 WhiteA 中移动 RedB ,那么它将重叠,仍然保持层次结构,结果将是: GreenC - GreenC - WhiteA - WhiteA < / strong>而不是: GreenC - RedB -WhiteA

我不明白为什么它不会识别 RedB ,它上面也有 BoxCollider2D 。仅当 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;
}

0 个答案:

没有答案