[Unity] 9일차 선따라그리기

김소연·2025년 4월 18일

✔ 화살표 만들기

Camera.main.ScreenToWorldPoint(Vector3 screenPosition) 함수는
✔ screenPosition.x/y는 화면 픽셀 기준 좌표
✔ screenPosition.z는 "카메라 위치를 기준으로 얼마나 떨어진 건지" 를 의미

  1. 2초마다 스타트 포인트가 스폰
    이를 클릭하면 화살표가 스폰
    이를 클릭하지 않으면 MISS 처리

  2. 화살표가 스폰되었을 때 드로잉 시작
    제한 시간 동안 드로잉한 선의 길이/방향/각도/선 근접도를 기준선과 비교
    반대 방향으로 그리거나, 너무 적게 (40% 이하 )그렸거나, 입력이 없을 경우 MISS 처리

문제 : 어떻게, 내가 그린 선과 기존의 선을 인식하고 판정할 것인가

  • 트러블슈팅!!

3D 프로젝트의 기본 카메라는 Perspective 방식이라서,
카메라의 projection을 orthographic으로 바꿔야 한다.

perspective는 원근법 방식으로,
input.mousePosition은 화면의 x,y 좌표만 알려주고 z좌표 는 알수없다

따라서 perspective 카메라를 유지하고 싶다면 마우스의 z좌표를 강제로 설정하고,
Vector3 pos = Input.mousePosition;
pos.z = 10f;
mousePoints.Add(Camera.main.ScreenToWorldPoint(pos));

카메라는 z = -10

혹은

float distance = Camera.main.WorldToScreenPoint(transform.position).z;
Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance);

0개의 댓글