안녕하세요,인친님들!
오늘은 게임 개발에서 매우 유용한 기능인 Input.mousePosition에 대해 자세히 알아보겠습니다. 이 기능을 사용하면 화면상의 마우스 커서 위치를 쉽게 알 수 있어요. 커서를 따라 움직이는 UI, 마우스로 조작하는 캐릭터, 포인트 앤 클릭 게임 등을 만들 때 꼭 필요한 기능이죠.
Input.mousePosition이란?
Input.mousePosition은 Unity에서 제공하는 속성으로, 현재 마우스 커서의 위치를 화면 좌표로 반환합니다. 이 값은 Vector3 형태로 제공되며, x와 y 값은 픽셀 단위의 화면 좌표를, z 값은 항상 0을 나타냅니다.
기본 사용법
Input.mousePosition의 기본적인 사용법은 매우 간단합니다. 다음과 같이 사용할 수 있어요:
using UnityEngine;
public class MousePositionExample : MonoBehaviour
{
void Update()
{
Vector3 mousePos = Input.mousePosition;
Debug.Log("마우스 위치: " + mousePos);
}
}
이 스크립트를 게임 오브젝트에 추가하고 실행하면, 콘솔 창에 마우스의 현재 위치가 계속해서 출력됩니다.
화면 좌표계 이해하기
Unity의 화면 좌표계는 다음과 같습니다:
- 원점 (0, 0)은 화면의 왼쪽 아래 모서리입니다.
- x 좌표는 오른쪽으로 갈수록 증가합니다.
- y 좌표는 위로 갈수록 증가합니다.
- 최대값은 화면의 해상도에 따라 다릅니다.
예를 들어, 1920x1080 해상도의 화면에서:
- 왼쪽 아래 모서리는 (0, 0)
- 오른쪽 위 모서리는 (1920, 1080)
- 화면 중앙은 (960, 540)
실전 예제: 마우스 따라 움직이는 오브젝트
이제 Input.mousePosition을 사용해 마우스를 따라 움직이는 오브젝트를 만들어 볼까요?
using UnityEngine;
public class MouseFollower : MonoBehaviour
{
public float moveSpeed = 10f;
private Camera mainCamera;
void Start()
{
mainCamera = Camera.main;
}
void Update()
{
// 마우스 위치를 월드 좌표로 변환
Vector3 mouseWorldPosition = mainCamera.ScreenToWorldPoint(Input.mousePosition);
mouseWorldPosition.z = 0f; // z 좌표를 0으로 설정 (2D 게임용)
// 오브젝트를 마우스 위치로 부드럽게 이동
transform.position = Vector3.Lerp(transform.position, mouseWorldPosition, moveSpeed * Time.deltaTime);
}
}
이 스크립트를 사용하면:
- 마우스 커서의 화면 좌표를 가져옵니다.
- 이를 게임 월드의 좌표로 변환합니다.
- 오브젝트가 그 위치로 부드럽게 이동합니다.
주의사항 및 팁
- 성능 고려:
Update()함수에서Input.mousePosition을 자주 호출하면 성능에 영향을 줄 수 있습니다. 필요한 경우에만 사용하세요. - 화면 밖 처리: 마우스가 화면 밖으로 나가도
Input.mousePosition은 계속 값을 반환합니다. 필요하다면 이를 체크해야 합니다. - UI와 사용: Canvas의 UI 요소와 함께 사용할 때는
RectTransformUtility.ScreenPointToLocalPointInRectangle()을 사용하면 좋습니다. - 3D 게임에서의 사용: 3D 게임에서는
Camera.ScreenToWorldPoint()대신Camera.ScreenPointToRay()를 사용하여 레이캐스팅을 해야 할 수 있습니다.
#Unity #GameDev #MouseInput #UnityTips
'1인 개발 게임 (Unity) > UNITY' 카테고리의 다른 글
| [UNITY] 오브젝트가 게임 뷰에서 안보여요 -> '레이어 번호'를 잘 설정합시다. (0) | 2024.08.08 |
|---|---|
| [UNITY] 컴포넌트란? (오브젝트에 성질/기능 추가하기) (2) | 2024.08.07 |
| [UNITY] 오브젝트를 회전시키는 법 (+회전 속도를 부드럽게 줄이기) (1) | 2024.08.07 |
| [UNITY] 프레임 관리 -> 캐릭터의 이동 속도 FPS와 무관하게 설정하기 (2) | 2024.08.07 |
| [Unity] 게임 오브젝트의 좌표 -> transform.position, Find 메서드 (2) | 2024.07.18 |