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; } } } } }