유니티/유니티 C#

[유니티/C#] 터치로 화면이동

진서박 2022. 8. 7. 18:30
반응형

참고한 블로그

https://blog.naver.com/dlehdgh1120/221706425033

public class CameraController : MonoBehaviour
{
    //* 터치, 마우스 카메라 컨트롤러 *//
    Vector2 clickPoint;
    Vector3 touchStart;

    void Awake()
    {
        // 카메라 배율 초기화
        Camera.main.orthographicSize = 10;
    }


    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // 마우스가 눌렸을 때 마우스 좌표 저장
            // clickPoint = Input.mousePosition;
            touchStart = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        }

        if (Input.GetMouseButton(0))
        {

            Vector3 position = touchStart - Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Camera.main.transform.position = new Vector3(Camera.main.transform.position.x + position.x, 6, Camera.main.transform.position.z + position.z);
            // 실패했던 코드
            // Camera.main.transform.position += position;
        }
    }
}

ScreenToWorldPoint를 사용해서 마우스 좌표를 받아왔고, 화면상의 카메라 위치를 빼 주었다(position)

 

이 position을 그대로 카메라의 transform.position에 더해주었더니 화면을 위/아래로 움직일 때 카메라가 상/하로 움직이는 문제가 생겼다. 이로 인해 카메라는 오브젝트 아래로 내려가 버렸는데, 화면을 기준으로 일정 부분이 잘리는 현상이 발생했다. 

버그

 

이 문제는 position을 더해줄 때 x, z만 더해주고 y축을 고정시켜 해결했다.

정상작동 한다

 

+ 개선해야할 점

화면 드래그 속도가 느림

줌인/줌아웃 추가

반응형