示例#1
0
    void CheckLeftClick()
    {
        // left click
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            Ray        ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2.0f, Screen.height / 2.0f, 0));

            if (Physics.Raycast(ray, out hit, 6.0f))
            {
                MeshCollider collider = hit.collider as MeshCollider;
                if (collider != null)
                {
                    Mesh mesh = collider.sharedMesh;

                    // Debug.DrawRay(player.transform.position, hit.point - player.transform.position);
                    int index = hit.triangleIndex * 3;

                    Vector3 hit1 = mesh.vertices[mesh.triangles[index]];
                    Vector3 hit2 = mesh.vertices[mesh.triangles[index + 1]];
                    Vector3 hit3 = mesh.vertices[mesh.triangles[index + 2]];

                    Vector3 blockPos = getHitObjectPos(hit1, hit2, hit3, hit.normal);

                    if (blockPos.y <= -128)
                    {
                        return;
                    }

                    Block block = world.getBlock(blockPos);
                    if (block != null)                       // draw small one
                    {
                        DropItem dropItem = (new GameObject()).AddComponent <DropItem> () as DropItem;
                        dropItem.generate3DMesh(block, blockPos);

                        world.removeBlock(blockPos, true);
                        chunkChanged = true;
                    }
                }
            }
        }
    }