본문 바로가기
개발/Unity

유니티 - 클릭 후 화면 영역 구분하기

by 피로물든딸기 2022. 2. 16.
반응형

Unity 전체 링크

 

화면을 반으로 나누어 왼쪽을 클릭하면 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:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글