我正在尝试使用可移动物体制作拖放区域。 我的设置看起来像这样:
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;
}