当对象重叠时,Unity拖放不起作用

时间:2014-07-22 00:17:29

标签: c# user-interface drag-and-drop unity3d

拖放代码工作正常,直到我将播放器对象拖到另一个对象上。如果我将播放器对象放在另一个对象上,则拖放不再起作用。任何人都可以解释为什么会这样吗?我将所有对象放在一个数组中,以便我可以更容易地跟踪它们。这是附加到主摄像头并创建对象的代码的一部分:

    public GameObject sphereFab;
    public GameObject dropFab;
    public Vector3 position;
    public static int arraySize; // This variable is set in the class s_initialize
    private Object[] playerHolder;
    private Object[] dropHolder;

    // Use this for initialization
    void Start () {

        // need to send in the size of the array prior to initialization
        playerHolder = new Object[arraySize];
        dropHolder = new Object[arraySize];

        // Create players
        for (int a = 0; a < 12; a+=2) {
            position = new Vector3(a - 5, -3, 0);

            if (a == 0)
                 playerHolder [a] = Instantiate(sphereFab, position, Quaternion.identity);
            else
                playerHolder [a/2] = Instantiate(sphereFab, position, Quaternion.identity);
        }

            // Create drops for players
        for (int a = 0; a < 12; a+=2) {
            position = new Vector3(a - 5, 3, -.1f);

            if (a == 0)
                dropHolder [a] = Instantiate(dropFab, position, Quaternion.identity);
            else
                dropHolder [a/2] = Instantiate(dropFab, position, Quaternion.identity);

        }
}

这是附加到播放器的代码:

private float dist;
    private Vector3 v3Offset;
    private Plane plane;

    void OnMouseDown() {
        plane.SetNormalAndPosition(Camera.main.transform.forward, transform.position);
        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
        float dist;
        plane.Raycast (ray, out dist);
        v3Offset = transform.position - ray.GetPoint (dist);        
    }

    void OnMouseDrag() {
        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
        float dist;
        plane.Raycast (ray, out dist);
        Vector3 v3Pos = ray.GetPoint (dist);
        transform.position = v3Pos + v3Offset;    
    }
}

1 个答案:

答案 0 :(得分:1)

我能够通过从dropFab中移除对撞机来解决问题。