본문 바로가기

유니티(Unity)

유니티(Unity) Webgl에서 Cursor.Locked 이슈

1인칭 게임을 만들 때

 Cursor.lockState = CursorLockMode.Locked;

코드를 사용하면 커서가 사라지며 화면 가운데에 고정됩니다. 

이 코드를 사용하면 esc키와 마우스 클릭이 자동 활성화되는데 esc키를 누르면 커서가 보이고, 스크린을 마우스로 클릭하면 다시 잠기는 방식입니다.

 

문제는 UI버튼을 누를 때입니다. esc키를 눌러 커서를 보이게하고 버튼을 클릭하려 하면, 커서가 잠겨버리는 현상이 나타납니다. Locked 을 사용하지 않고 Cursor.visible = false; 만 사용하려고하니 스크린 밖으로 커서가 나가버립니다.

webgl이 아니면 locked 대신 visible을 이용해도 될듯 싶지만, webgl에서는 위에 말한 문제점때문에 visible을 사용하기는 힘들 것 같습니다.

 

그래서 차선으로 다른키에 기능을 할당해주었습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Update()
        {
            if (Input.GetKeyDown(KeyCode.Alpha1))
            {
                if(i == 0)
                {
                    Cursor.lockState = CursorLockMode.None;
                    
                    i = 1;
                }
                else if(i == 1)
                {
                    Cursor.lockState = CursorLockMode.Locked;
                    
                    i = 0;
                }
            }
        }
cs

 

키보드 상단 1번 키를 한번누르면 커서가 나타나고 한번더누르면 다시 Locked 됩니다.