화면 위치에 해당하는 Ray 생성 : Camera.main.ScreenPointToRay

2023. 12. 7. 10:48·Unity
반응형

Unity에서 Camera.main.ScreenPointToRay 함수 사용하기

Unity에서 카메라의 시야에 있는 스크린 상의 점을 광선으로 변환하는 데 사용되는 함수가 Camera.main.ScreenPointToRay입니다. 이 함수는 다음과 같은 인수를 사용합니다.

  • screenPoint : 스크린 상의 점의 좌표입니다.
  • worldUp : 카메라의 월드 업 벡터입니다.

이 함수는 다음과 같은 반환 값을 가집니다.

  • ray : 스크린 상의 점을 나타내는 광선입니다.

사용 예제

void Update()
{
    // 스크린 상의 점을 가져옵니다.
    Vector3 screenPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    // 스크린 상의 점을 광선으로 변환합니다.
    Ray ray = Camera.main.ScreenPointToRay(screenPoint);

    // 광선을 사용하여 게임 오브젝트를 찾습니다.
    Collider hitCollider = Physics.Raycast(ray);

    // 광선이 게임 오브젝트를 찾으면, 해당 오브젝트에 대한 정보를 출력합니다.
    if (hitCollider != null)
    {
        Debug.Log(hitCollider.gameObject.name);
    }
}

이 예제에서는 Input.mousePosition을 사용하여 스크린 상의 점을 가져옵니다. 그런 다음, Camera.main.ScreenPointToRay 함수를 사용하여 스크린 상의 점을 광선으로 변환합니다. 마지막으로, Physics.Raycast 함수를 사용하여 광선을 사용하여 게임 오브젝트를 찾습니다.

 

이미지 설명

아래 사진에 보이는 파란색 선이 마우스 클릭한 위치의 Ray입니다. 

한계

Camera.main.ScreenPointToRay 함수는 카메라의 시야에 있는 스크린 상의 점을 광선으로 변환할 수 있습니다. 하지만, 카메라의 시야 밖에 있는 스크린 상의 점을 광선으로 변환할 수는 없습니다.

예를 들어, 카메라의 시야 밖에 있는 화면 왼쪽 끝을 광선으로 변환하려고 하면, Camera.main.ScreenPointToRay 함수는 다음과 같은 오류를 발생시킵니다.

System.ArgumentException: 'screenPoint' is not in the camera's frustum.

이 문제를 해결하려면, Camera.main.ScreenPointToRay 함수 대신 Camera.main.ViewportPointToRay 함수를 사용할 수 있습니다. Camera.main.ViewportPointToRay 함수는 카메라의 시야 안에 있는 모든 스크린 상의 점을 광선으로 변환할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity' 카테고리의 다른 글

Animator State Transition : Has Exit Time  (0) 2023.12.12
월드 공간 지점을 스크린상의 지점으로 변환 : WorldToScreenPoint  (0) 2023.12.08
Unity의 Character Controller : 간단하게 움직임 구현  (0) 2023.12.05
Unity의 Collision에 관하여  (1) 2023.11.30
Unity의 PointEventData 클래스  (1) 2023.11.27
'Unity' 카테고리의 다른 글
  • Animator State Transition : Has Exit Time
  • 월드 공간 지점을 스크린상의 지점으로 변환 : WorldToScreenPoint
  • Unity의 Character Controller : 간단하게 움직임 구현
  • Unity의 Collision에 관하여
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    쇼핑몰리뷰
    파이썬
    appdevelopment
    리스트
    rtsp
    라떼우유
    카페24리뷰이관
    리뷰관리
    스마트스토어리뷰
    스크립트 실행 순서
    유니티
    믈레코비타멸균우유
    상품 리뷰 크롤링
    긴유통기한우유
    셀레니움
    learntocode
    C#
    devlife
    codingtips
    codingcommunity
    list
    programming101
    cv2
    ipcamera
    카페24리뷰
    programmerlife
    unity
    리뷰이관
    Python
    스크립트 실행
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
화면 위치에 해당하는 Ray 생성 : Camera.main.ScreenPointToRay
상단으로

티스토리툴바