Beispiel #1
0
    void CreateNewSplit(Vector3[] verts, int[] tris, int[] innerTris, Vector2[] uvs, Vector3[] normals, Vector3 force)
    {
        var split = new GameObject();

        split.transform.position   = transform.position;
        split.transform.rotation   = transform.rotation;
        split.transform.localScale = transform.localScale;
        split.transform.parent     = transform.parent;

        Mesh mesh = new Mesh();

        mesh.vertices      = verts;
        mesh.triangles     = tris;
        mesh.subMeshCount += 1;
        mesh.SetTriangles(innerTris, 1);
        mesh.uv = uvs;
        //mesh.RecalculateNormals();
        mesh.normals = normals;
        mesh.colors  = this.mesh.colors;
        mesh.Optimize();

        split.AddComponent <MeshFilter>().mesh = mesh;

        var rend = split.AddComponent <MeshRenderer>();

        Material[] materials = new Material[2] {
            GetComponent <MeshRenderer>().material,
            innerMaterial
        };
        rend.materials = materials;
        //rend.material = GetComponent<MeshRenderer>().material;

        var splittable = split.AddComponent <Splitable>();

        splittable.innerMaterial  = innerMaterial;
        splittable.FireSplitEvent = false;

        var convex      = new SimpleConvex(mesh);
        var simpleMesh1 = convex.BuildSimplifiedConvexMesh();
        var collider    = split.AddComponent <MeshCollider>();

        collider.sharedMesh = simpleMesh1;
        collider.convex     = true;

        var rigidBody = split.AddComponent <Rigidbody>();

        rigidBody.AddForce(force);
        /*split.GetComponent<Rigidbody>().velocity = GetComponent<Rigidbody>().velocity;*/
    }
Beispiel #2
0
    void CreateNewSplit(Vector3[] verts, int[] tris, int[] innerTris, Vector2[] uvs, Vector3[] normals, Vector3 force)
    {
        var split = new GameObject();
        split.transform.position = transform.position;
        split.transform.rotation = transform.rotation;
        split.transform.localScale = transform.localScale;
        split.transform.parent = transform.parent;

        Mesh mesh = new Mesh();
        mesh.vertices = verts;
        mesh.triangles = tris;
        mesh.subMeshCount += 1;
        mesh.SetTriangles(innerTris, 1);
        mesh.uv = uvs;
        //mesh.RecalculateNormals();
        mesh.normals = normals;
        mesh.colors = this.mesh.colors;
        mesh.Optimize();

        split.AddComponent<MeshFilter>().mesh = mesh;

        var rend = split.AddComponent<MeshRenderer>();
        Material[] materials = new Material[2]{
            GetComponent<MeshRenderer>().material,
            innerMaterial
        };
        rend.materials = materials;
        //rend.material = GetComponent<MeshRenderer>().material;

        var splittable = split.AddComponent<Splitable>();
        splittable.innerMaterial = innerMaterial;
        splittable.FireSplitEvent = false;

        var convex = new SimpleConvex(mesh);
        var simpleMesh1 = convex.BuildSimplifiedConvexMesh();
        var collider = split.AddComponent<MeshCollider>();
        collider.sharedMesh = simpleMesh1;
        collider.convex = true;

        var rigidBody = split.AddComponent<Rigidbody>();
        rigidBody.AddForce(force);
        /*split.GetComponent<Rigidbody>().velocity = GetComponent<Rigidbody>().velocity;*/
    }