예제 #1
0
    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 비활성화
            }
        }
    }
예제 #2
0
    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 비활성화
            }
        }
    }
예제 #3
0
    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(); // 가구 편집 조작 가이드 업데이트
        }
    }