Exemplo n.º 1
0
    //获取物体的实际尺寸
    public static Vector3 GetTrueSize(Transform tran, W_SizeMode sizeMode = W_SizeMode.根据collider)
    {
        Vector3 size = new Vector3(0, 0, 0);

        if (sizeMode == W_SizeMode.根据collider)
        {
            bool haveBoxcollider = true;
            if (null == tran.GetComponent <BoxCollider>())
            {
                haveBoxcollider = false;
                tran.gameObject.AddComponent <BoxCollider>();
            }
            BoxCollider box = tran.GetComponent <BoxCollider>();
            size = box.bounds.size;
            if (!haveBoxcollider)
            {
                GameObject.DestroyImmediate(box);
            }
        }
        else
        {
            MeshFilter mesh = tran.GetComponent <MeshFilter>();
            size = mesh.mesh.bounds.size;
        }
        return(size);
    }
Exemplo n.º 2
0
    //根据物体的大小创建一个cube等
    public static GameObject SetupGameobjectBySize(Transform tran, string addName, PrimitiveType meshType = PrimitiveType.Cube, W_SizeMode sizeMode = W_SizeMode.根据collider)
    {
        Vector3    size = GetTrueSize(tran, sizeMode);
        GameObject go   = GameObject.CreatePrimitive(meshType);

        if (meshType == PrimitiveType.Cube)
        {
            go.transform.localScale = size;
        }
        else if (meshType == PrimitiveType.Sphere || meshType == PrimitiveType.Capsule)
        {
            float maxAxis = Mathf.Max(size.x, size.y, size.z);
            go.transform.localScale = new Vector3(maxAxis, maxAxis, maxAxis);
        }
        go.transform.SetParent(tran);
        go.transform.localPosition = new Vector3(0, 0, 0);
        go.name = tran.name + addName;
        return(go);
    }