반응형
유니티 엔진에서 제공하는 레이캐스트(Raycast)를 사용할 때,
out 이라는 키워드가 눈에 띈다.
이게 굉장히 생소하기 때문에 뭔지 한번 알아보자~
1. 레이캐스트(Raycast) 란?
레이캐스트란 말그대로 광선(ray)를 발사하여 오브젝트가 존재하는지 판별하는 유니티 물리엔진의 메소드이다.
위 사진은 카메라로부터 광선을 발사하지만, 광선 발사지점을 어느곳이든 지정할 수 있고, 방향(Direction), 거리(Distance) 등 의 조절이 가능하다. 광선을 발사해서 오브젝트와 부딫히는 부분을 Hit point 라 한다.
아래와 같이 Physics 클래스를 통해 사용가능 하며, 다양한 파라미터를 인자로 넣을 수 있다.
Physics.Raycast(transform.position, direction, out hit, distance)
물체 충돌시 true 를 반환한다.
2. out 키워드
위 예문을 보면 파라미터로 out hit 을 넣는것을 볼 수 있다(여기서 hit 은 UnityEngine의 RaycastHit 구조체 타입이다.). 그럼 out은 무엇일까. C#에서는 out을 직접 매개변수의 값을 바꿀 수 있는 매개변수 한정자로 사용한다. 아래 예문을 보자.
int initializeInMethod;
initiallizeInMethod = OutArgExample(initializeInMethod);
Console.WriteLine(initializeInMethod); // value is now 44
void OutArgExample(out int number)
{
number = 44;
return number;
}
출력 : 1
보통 매개변수의 값을 바꾸려면 위 구문 같이 return 키워드를 사용해서, 직접 할당해 주어야 한다. 이제 out 키워드를 사용한 예문을 보자
int initializeInMethod;
OutArgExample(out initializeInMethod);
Console.WriteLine(initializeInMethod); // value is now 44
void OutArgExample(out int number)
{
number = 44;
}
출력 : 44
변수에 직접할당을 하지 않아도 한정자를 통해 바로 값이 변한다.
3. 그래서
결국 레이캐스트에 파라미터로 들어가는 out 키워드는 위에서 봤던 레이(Ray)가 물체와 충돌하는 지점인 Hit Point를 RaycastHit 구조체 변수(hit)에 담아준다는 뜻이다.
출처
반응형
'프로그래밍,Tools > Unity,C#' 카테고리의 다른 글
[Unity] 유니티 UI 캔버스(Canvas) 해상도 조절하기 (0) | 2022.05.16 |
---|---|
[C#] Abstract(추상)/Virtual(가상)/Interface(인터페이스) 차이 (0) | 2022.04.03 |
[Unity] 유니티와 깃허브(GitHub) 연동하기 2 -메타파일 표시, .gitignore 편집 (2) | 2022.03.30 |
[Unity] 유니티와 깃허브(GitHub) 연동하기 1 (0) | 2022.03.29 |
[Unity] 3D 모델 다운로드/이용 가능한 사이트 정리 (0) | 2022.03.28 |
댓글