Unity에서의 마우스 컨트롤

이 튜토리얼에서는 Unity에서 기본 마우스 컨트롤을 구현하는 방법을 알아봅니다. 마우스 입력 감지, 마우스 클릭 처리, 마우스 이동, 마우스를 사용한 게임 객체와의 상호 작용을 다룹니다.

프로젝트 설정

코딩을 시작하기 전에 간단한 Unity 프로젝트를 설정해 보겠습니다.

  1. 새로운 Unity 프로젝트를 만듭니다.
  2. 장면에 새로운 3D 또는 2D 객체를 추가합니다(예: 큐브나 스프라이트).
  3. MouseController라는 이름의 새로운 C# 스크립트를 만들고 이를 기본 카메라나 빈 게임 오브젝트에 연결합니다.

마우스 입력 감지

Unity 마우스 입력을 감지하는 내장된 메서드를 제공합니다. Input.GetMouseButtonDown 메서드를 사용하여 마우스 버튼 눌림을 감지할 수 있습니다.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) // Left mouse button
        {
            Debug.Log("Left mouse button pressed");
        }

        if (Input.GetMouseButtonDown(1)) // Right mouse button
        {
            Debug.Log("Right mouse button pressed");
        }
    }
}

마우스 클릭 처리

객체에 대한 마우스 클릭을 처리하려면 레이캐스팅을 사용해야 합니다. 레이캐스팅을 사용하면 마우스 클릭이 씬의 게임 객체와 교차하는지 감지할 수 있습니다.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Debug.Log("Hit: " + hit.transform.name);
                // Perform actions on the hit object here
            }
        }
    }
}

마우스 움직임

Unity에서 마우스 움직임을 감지하는 것은 Input.GetAxis를 사용하여 수행할 수 있습니다. Mouse XMouse Y 축을 사용하여 수평 및 수직 방향으로 마우스 움직임을 얻을 수 있습니다.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

게임 객체와의 상호작용

게임 객체와 상호작용하도록 스크립트를 확장해 보겠습니다. 객체를 클릭하면 객체의 색상을 변경합니다.

using UnityEngine;

public class MouseController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Renderer renderer = hit.transform.GetComponent();
                if (renderer != null)
                {
                    renderer.material.color = Random.ColorHSV();
                }
            }
        }

        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");

        if (mouseX != 0 || mouseY != 0)
        {
            Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
        }
    }
}

결론

Unity에서 마우스 컨트롤의 기본을 다루었습니다. 마우스 입력을 감지하고, 마우스 클릭을 처리하고, 마우스 움직임을 추적하고, 레이캐스팅을 사용하여 게임 객체와 상호 작용하는 방법을 배웠습니다. 이러한 개념을 확장하여 Unity 프로젝트에서 더 복잡한 상호 작용을 만들 수 있습니다.