쫑가 과정

2d 클릭 2) 더블 클릭 본문

Unity2D/구현

2d 클릭 2) 더블 클릭

쫑가 2022. 1. 26. 07:22

구현

오브젝트 더블 클릭 시 확대, 확대된 오브젝트 더블 클릭 시 축소.

확대된 상태에서 다른 오브젝트 더블 클릭 시 해당 오브젝트 확대로 바뀜.

 

https://answers.unity.com/questions/331545/double-click-mouse-detection-.html

 

Double click mouse detection ? - Unity Answers

 

answers.unity.com

핵심

클릭된 상태인 bool을 주고 정해놓은 딜레이 시간(flote) 안에 한 번 더 클릭하면 더블클릭 상태(bool)가 되고

딜레이 시간이 지나면 클릭된 상태는 false. 

float doubleClickdelay = 0.3f;
float timerForDoubleClick; 
bool onOneClicked;
// 아무 클릭도 안되어있음
        if (!onOneClicked)
        {
            onOneClicked = true;
            timerForDoubleClick = Time.time;            
        }

딜레이 시간 초과.

void DoubleClickFalse()
    {
        if (onOneClicked)
        {
            if (Time.time - timerForDoubleClick > doubleClickdelay)
            {
                onOneClicked = false;
            }
        }
    }

 

내가 진행한 조건문

void DoubleClick()
    {
        // 아무 클릭도 안되어있음
        if (!onOneClicked)
        {
            onOneClicked = true;
            timerForDoubleClick = Time.time;            
        }
        // 한 번 클릭되었고 더블 클릭이 안된 상태에서 첫번째 클릭된 이름과 두번 째 클릭한 이름이 같을 때
        else if(!onDoubleClicked && selectedName == hit.collider.name)
        {
            onOneClicked = false;
            onDoubleClicked = true;
            selectedDoubleName = hit.collider.name;
            mainCameraZooming();
        }
        // 더블 클릭되었고 첫 번째 클릭된 이름과 두 번째 클릭한 이름이 같고 더블 클릭된 이름도 같을 때
        // 더블 클릭된 오브젝트를 더블 클릭.
        else if(onDoubleClicked && hit.collider.name == selectedDoubleName && selectedName == selectedDoubleName)
        {
            onOneClicked = false;
            onDoubleClicked = false;
            mainCameraZoomOut();
            selectedDoubleName = "";
        }
        // 더블 클릭되었고 첫 번째 클릭된 이름과 더블 클릭된 이름이 다를 때 
        // 더블 클릭된 오브젝트 외 다른 오브젝트 더블 클릭.
        else if(onDoubleClicked && selectedName != selectedDoubleName)
        {
            onOneClicked = false;
            mainCameraZooming();
            selectedDoubleName = hit.collider.name;
        }
    }

 

Comments