public void LoadObject(Interior interior) // 오브젝트 불러오기 { Vector3 objectCreatePos = new Vector3((InteriorArrayManager.instance.arraySizeX * 0.5f), 0, (InteriorArrayManager.instance.arraySizeZ * 0.5f)); // 오브젝트 생성 좌표 구하기 (방 중앙) if (interior.sizeX % 2 == 0) // 불러올 오브젝트의 X사이즈가 2의 배수라면 { objectCreatePos.x -= 0.5f; // 오브젝트 생성 좌표를 왼쪽으로 0.5칸 만큼 이동 } if (interior.sizeY % 2 == 0) // 불러올 오브젝트의 Y사이즈가 2의 배수라면 { objectCreatePos.y += 0.5f; // 오브젝트 생성 좌표를 위쪽으로 0.5칸 만큼 이동 } if (interior.sizeZ % 2 == 0) // 불러올 오브젝트의 Z사이즈가 2의 배수라면 { objectCreatePos.z -= 0.5f; // 오브젝트 생성 좌표를 앞쪽으로 0.5칸 만큼 이동 } objectCreatePos.y += ((interior.sizeY + 1) / 2) - 1; // 오브젝트의 Y사이즈에 비례해 오브젝트 생성 Y좌표를 증가 Cursor.transform.position = objectCreatePos; // 커서를 오브젝트 생성 좌표로 이동시키기 Cursor.transform.localScale = new Vector3(interior.sizeX + 0.01f, interior.sizeY + 0.01f, interior.sizeZ + 0.01f); // 커서 크기를 불러올 오브젝트 크기에 맞게 설정 PickedObject = Instantiate(interior.gameObject, objectCreatePos, Quaternion.identity).GetComponent <Interior>(); // 오브젝트 생성 좌표에 오브젝트 생성 후 Pick if (PickedObject.GetComponentInChildren <Collider>()) { foreach (Collider i in PickedObject.GetComponentsInChildren <Collider>()) { i.enabled = false; // Collider 비활성화 } } }
public void PickObject() // 오브젝트 잡기 { PickedObject = InteriorArrayManager.instance.interiorArray[(int)Cursor.transform.position.x, (int)Cursor.transform.position.y, (int)Cursor.transform.position.z]; // 커서 위치의 오브젝트 선택 InteriorArrayManager.instance.UnplaceFromArray(PickedObject); // 배열에서 해당 오브젝트 빼기 Cursor.transform.position = PickedObject.transform.position; // 커서를 오브젝트 중앙으로 이동 Cursor.transform.localScale = new Vector3(PickedObject.sizeX + 0.01f, PickedObject.sizeY + 0.01f, PickedObject.sizeZ + 0.01f); // 커서 크기를 오브젝트 크기에 맞게 설정 if (PickedObject.GetComponentInChildren <Collider>()) { foreach (Collider i in PickedObject.GetComponentsInChildren <Collider>()) { i.enabled = false; // Collider 비활성화 } } }
public void TryPutObject() // 오브젝트 놓기 시도 { if (CheckPickedObjectCanPutHere() == true && interfererAtCursor == false) // 현재 위치에 다른 오브젝트가 없다면 { InteriorArrayManager.instance.PlaceAtArray(PickedObject); // 배열에 해당 오브젝트 넣기 Cursor.transform.localScale = new Vector3(1.01f, 1.01f, 1.01f); // 커서 크기를 원래대로 되돌리기 Cursor.transform.position = new Vector3((int)Cursor.transform.position.x, (int)Cursor.transform.position.y, (int)Cursor.transform.position.z); // 커서 XYZ 좌표를 정수로 되돌리기 if (PickedObject.GetComponentInChildren <Collider>()) { foreach (Collider i in PickedObject.GetComponentsInChildren <Collider>()) { i.enabled = true; // Collider 활성화 } } PickedObject = null; // 오브젝트 선택 해제 RoomUIManager.instance.UpdateControlGuide(); // 가구 편집 조작 가이드 업데이트 } }