二微矩阵碰撞检测

   采用的是左下角为原点. 

   //左上(x,y) 右下(z,w).返回val2和val1是否发生碰撞,如果碰撞返回val2相对val1的位置 1上 2下 4右 8左.

    int test(Vector4 val1, Vector4 val2)

    {
        bool ret = true;
//        if(val2.x > val1.x && val2.x > val1.z)
//            ret = false;
//        else if(val1.x > val2.x && val1.x > val2.z)
//            ret = false;
//        else if(val1.w > val2.y && val1.w > val2.w)
//            ret = false;
//        else if(val2.w > val1.y && val2.w > val1.w)
//            ret = false;

        if(val2.x > val1.z)
            ret = false;
        else if(val1.x > val2.z)
            ret = false;
        else if(val1.w > val2.y)
            ret = false;
        else if(val2.w > val1.y)
            ret = false;


        if(ret)
        {
            byte ii = 0;
            if(val2.y > val1.y)
                ii |= 1;
            if(val2.w < val1.w)
                ii |= 2;
            if(val2.z > val1.z)
                ii |= 4;
            if(val2.x < val1.x)
                ii |= 8;
            return ii;
        }
        else
            return -1;
    }

你可能感兴趣的:(Unity3d)