유니티 환경에서 마우스 클릭을 처리하는 것은 게임 개발의 기본 중 하나입니다. 간단해 보이지만, 제대로 이해하고 활용하면 게임의 인터랙티브 요소를 획기적으로 향상시킬 수 있습니다. 이 글에서는 유니티에서 마우스 클릭을 처리하는 다양한 방법과 실전 팁을 소개합니다.

마우스 클릭 이해하기

유니티에서 마우스 클릭은 단순히 “클릭했다”는 액션 이상의 의미를 가질 수 있습니다. 클릭 위치, 클릭된 객체, 클릭과 드래그 등 다양한 요소를 고려해야 하죠. 먼저, 기본적인 클릭 처리를 살펴보겠습니다.

기본적인 클릭 처리

유니티에서 마우스 클릭을 처리하는 가장 기초적인 방법은 Input.GetMouseButtonDown() 메서드를 활용하는 것입니다. 이 메서드는 특정 프레임에서 마우스 버튼이 눌렸는지 여부를 반환합니다.

void Update()
{
    if (Input.GetMouseButtonDown(0)) // 0은 마우스 왼쪽 버튼
    {
        Debug.Log("마우스 왼쪽 버튼 클릭!");
    }
}

위 코드는 매 프레임마다 마우스 왼쪽 버튼이 눌렸는지 확인하고, 눌렸다면 콘솔에 메시지를 출력합니다.

객체 클릭 처리하기

게임에서는 단순히 클릭 여부를 확인하는 것을 넘어, 클릭된 객체를 확인하는 것이 중요합니다. 이를 위해 Raycast를 사용하여 마우스 클릭 위치의 객체를 감지할 수 있습니다.

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        
        if (Physics.Raycast(ray, out hit))
        {
            Debug.Log(hit.collider.gameObject.name + " 객체가 클릭되었습니다!");
        }
    }
}

위 코드에서는 카메라에서 클릭 위치로 레이를 발사하여, 해당 위치에 존재하는 객체를 체크합니다. RaycastHit를 통해 클릭된 객체의 정보에 접근할 수 있습니다.

여러 버튼 활용하기

유니티에서는 마우스의 여러 버튼을 활용하여 다양한 인터랙션을 구현할 수 있습니다. 예를 들어, 오른쪽 버튼은 메뉴를 열고, 가운데 버튼은 줌 기능을 담당할 수 있습니다.

void Update()
{
    if (Input.GetMouseButtonDown(1)) // 1은 마우스 오른쪽 버튼
    {
        Debug.Log("오른쪽 버튼으로 메뉴가 열립니다!");
    }
    if (Input.GetMouseButtonDown(2)) // 2는 마우스 가운데 버튼
    {
        Debug.Log("가운데 버튼으로 줌 기능을 작동합니다!");
    }
}

클릭과 드래그

마우스를 클릭하고 드래그하는 기능은 많은 게임에서 활용됩니다. 드래그 기능을 구현하려면 클릭 위치와 드래그 위치를 지속적으로 추적해야 합니다.

private Vector3 _dragStartPosition;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        _dragStartPosition = Input.mousePosition;
    }
    if (Input.GetMouseButton(0))
    {
        Vector3 currentPosition = Input.mousePosition;
        Vector3 dragVector = currentPosition - _dragStartPosition;
        Debug.Log("드래그 중: " + dragVector);
    }
}

이 예제는 드래그 시작 위치와 현재 위치의 차이를 계산하여 드래그 중인 벡터를 콘솔에 출력합니다.

결론

유니티에서 마우스 클릭을 처리하는 방법은 다양하며, 이를 어떻게 활용하느냐에 따라 게임의 사용자 경험이 크게 달라질 수 있습니다. 기본적인 클릭 처리부터 객체 감지, 버튼 활용, 드래그까지 여러 방법을 실전에서 응용해 보세요. 연습과 창의력을 통해 더욱 몰입감 있는 게임을 만들어 나가시기 바랍니다!