상세 컨텐츠

본문 제목

Unity_기초_드래곤플라이트 비슷한 게임 만들기_마우스로 움직이기

Unity_기초

by 위한신 2024. 4. 30. 17:08

본문

 

이번에는 마우스로 조지를 좌지우지해보자

일단은 마우스의 값을 읽어오는 코드를 짜보자, 

 

Vector3 mousepos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Debug.Log(mousepos);
        //인풋으로 가져온 마우스 값은 해상도 기준이고 조지의 위치는 화면 중앙의
        //네모 값으로 정해진다.

마우스가 위치한 값과 조지가 위치한 값은 기준이 다르기 때문에 그 기준을 일치시켜준다. 

 

 Vector3 mousepos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        transform.position = new Vector3(mousepos.x, transform.position.y , 0);

그 다음에는 조지의 움직임을 나타내는 벡터3를 다시 정의하고, 그 x값을 위에서 정한 마우스의 x값과 동일하게 만든다. y값 같은 경우에는 봉인되어 있기 때문에 조지가 가지고 있는 y값을 그대로 쓴다. 

 

이대로 게임을 실행하면 한 가지 문제에 직면한다.

마우스의 x값을 따라가기 때문에 앞서 만들어놓은 조지의 방호벽들을 뚫고 그 값을 받아오는 것이다. 

그 탓에 조지는 밖으로 다시 튕겨져 나갈 위기에 빠진다. 

 

그래서 조지를 화면안에 계속 머무르게 하도록 최소값과 최대값을 정해주자. 

 

Vector3 mousepos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        float toX = Mathf.Clamp(mousepos.x,-2.35f,-2.35f);

        transform.position = new Vector3(toX, transform.position.y , 0);

 

Mathf.Clamp라는 명령어는 (정해진 값이, 작은 값보다 더 작거나, 큰 값보다 더 클때) 그 값을 작은값과, 큰 값으로 바꿔 표현하는 명령어다. 그러니까 정해진 값이 범위 내에 있다면 그대로 출력하고, 더 크다면 큰 제한으로, 작다면 작은 제한으로 표현한다.  

 

 그래서 조지는 박스 안에 갇혀 있을 수 있었다.

 

 

관련글 더보기