public bool[,,] TransformDataType(List <GameObject> targetBlockList, int size) { bool[,,] targetBlockExist = new bool[size, size, size]; for (int x = 0; x < size; x++) { for (int y = 0; y < size; y++) { for (int z = 0; z < size; z++) { targetBlockExist[x, y, z] = false; } } } foreach (GameObject targetblock in targetBlockList) { if (targetblock.gameObject != null) { int tempX = 0; int tempY = 0; int tempZ = 0; RaycastForFindingRaycastReceiver raycastForFindingRaycastReceiverScript = targetblock.gameObject.GetComponent <RaycastForFindingRaycastReceiver>(); Dictionary <string, string> hitRaycastReceiver = raycastForFindingRaycastReceiverScript.raycastReceiverChecker(); for (int x = 0; x < size; x++) { if (hitRaycastReceiver["X"] == "RaycastReceiverX" + x.ToString()) { tempX = x; break; } } for (int y = 0; y < size; y++) { if (hitRaycastReceiver["Y"] == "RaycastReceiverY" + y.ToString()) { tempY = y; break; } } for (int z = 0; z < size; z++) { if (hitRaycastReceiver["Z"] == "RaycastReceiverZ" + z.ToString()) { tempZ = z; break; } } targetBlockExist[tempX, tempY, tempZ] = true; } } return(targetBlockExist); }
public void CheckSimilarity() { //IsNowExist초기화 for (int x = 0; x < lengthX; x++) { for (int y = 0; y < lengthY; y++) { for (int z = 0; z < lengthZ; z++) { IsNowExist[x, y, z] = false; } } } List <Dictionary <string, string> > targetPosition = new List <Dictionary <string, string> >(); Transform[] targetBlocks = targetBlockMother.GetComponentsInChildren <Transform>(); Debug.Log(targetBlocks[2]); for (int i = 0; i < targetBlocks.Length; i++) { RaycastForFindingRaycastReceiver targetBlockRaycastReceiverScript = targetBlocks[i].gameObject.GetComponent <RaycastForFindingRaycastReceiver>(); Dictionary <string, string> hitRaycastReceiver = targetBlockRaycastReceiverScript.raycastReceiverChecker(); targetPosition.Add(hitRaycastReceiver); } for (int x = 0; x < lengthX; x++) { for (int y = 0; y < lengthY; y++) { for (int z = 0; z < lengthZ; z++) { for (int i = 0; i < targetPosition.Count; i++) { if (targetPosition[i]["X"] == "RaycastReceiverX" + x.ToString() && targetPosition[i]["Y"] == "RaycastReceiverY" + y.ToString() && targetPosition[i]["Z"] == "RaycastReceiverZ" + z.ToString()) { IsNowExist[x, y, z] = true; } } } } } IsMission = missionBlockGenerator.IsExist; for (int x = 0; x < size; x++) { for (int y = 0; y < size; y++) { for (int z = 0; z < size; z++) { if (IsNowExist[x, y, z] != IsMission[x, y, z]) { NumberOfSameBlock++; } } } } Similarity = NumberOfSameBlock / NumberOfAllBlock; Debug.Log(Similarity); }
public IEnumerator MakeObjectCheckerBox(int size) { boxShouldNotExist = new bool[size, size, size]; List <GameObject> checkColliderList = new List <GameObject>(); objectCheckerStartPosition = motherStatue.transform.position - new Vector3((size - 1) / 2f, (size - 1) / 2f, (size - 1) / 2f); for (int x = 0; x < size; x++) { for (int y = 0; y < size; y++) { for (int z = 0; z < size; z++) { var newCheckCollider = Instantiate(checkCollider, objectCheckerStartPosition + new Vector3(x, y, z), Quaternion.identity); checkColliderList.Add(newCheckCollider.gameObject); boxShouldNotExist[x, y, z] = true; } } } yield return(null); yield return(null); foreach (GameObject checkCollider in checkColliderList) { if (checkCollider.gameObject != null) { int tempX = 0; int tempY = 0; int tempZ = 0; RaycastForFindingRaycastReceiver raycastForFindingRaycastReceiverScript = checkCollider.gameObject.GetComponent <RaycastForFindingRaycastReceiver>(); Dictionary <string, string> hitRaycastReceiver = raycastForFindingRaycastReceiverScript.raycastReceiverChecker(); for (int x = 0; x < size; x++) { if (hitRaycastReceiver["X"] == "RaycastReceiverX" + x.ToString()) { tempX = x; break; } } for (int y = 0; y < size; y++) { if (hitRaycastReceiver["Y"] == "RaycastReceiverY" + y.ToString()) { tempY = y; break; } } for (int z = 0; z < size; z++) { if (hitRaycastReceiver["Z"] == "RaycastReceiverZ" + z.ToString()) { tempZ = z; break; } } boxShouldNotExist[tempX, tempY, tempZ] = false; } } }