반응형
화면을 반으로 나누어 왼쪽을 클릭하면 Left, 오른쪽을 클릭하면 Right를 출력해보자.
먼저 마우스 왼쪽 버튼을 입력받았을 때, Input.mousePosition을 출력하는 코드는 아래와 같다.
창의 왼쪽 아래 부분부터 (0, 0) ~ (Screen.width, Screen.height)를 가르키게 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraClickTest : MonoBehaviour
{
void Update()
{
if(Input.GetMouseButtonDown(0))
{
Debug.Log(Input.mousePosition.ToString());
}
}
}
이 마우스 위치를 Camera의 ScreenToViewportPoint로 넘겨주면 화면을 쉽게 분할할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraClickTest : MonoBehaviour
{
void Update()
{
if(Input.GetMouseButtonDown(0))
{
// Debug.Log(Input.mousePosition.ToString());
Vector3 mousePoint = Camera.main.ScreenToViewportPoint(Input.mousePosition);
Debug.Log(mousePoint.ToString());
}
}
}
창의 왼쪽 아래가 (0, 0, 0)이 되고 오른쪽 위가 (1, 1, 0)이 되도록 맞추어준다.
왼쪽과 오른쪽의 구분은 mousePoint 변수의 x가 0.5보다 작은지 check하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraClickTest : MonoBehaviour
{
// Update is called once per frame
void Update()
{
if(Input.GetMouseButtonDown(0))
{
Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, -Camera.main.transform.position.z);
Vector3 mousePoint = Camera.main.ScreenToViewportPoint(mousePos);
//Debug.Log(mousePoint.ToString());
if (mousePoint.x < 0.5) Debug.Log("Left");
else Debug.Log("Right");
}
}
}
아래와 같이 화면의 왼쪽을 클릭하면 Left가, 오른쪽을 클릭하면 Right가 출력된다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - 스크립트로 오브젝트 이동하기, RayCast로 멈추기 (2) (0) | 2022.02.23 |
---|---|
유니티 - 스크립트로 오브젝트 이동하기, RayCast로 멈추기 (1) (0) | 2022.02.21 |
유니티 스마트폰 해상도, 화면 비율 (1) | 2022.02.16 |
유니티 - 버텍스 스내핑 (Vertex Snapping) (0) | 2022.02.13 |
유니티 에디터 색상 변경하기 (0) | 2022.02.11 |
댓글