반응형

RayCast를 사용하다보면 충돌을 피하고 싶은 오브젝트들이 생긴다.


Ignore raycast 등을 사용해봤는데 뭔가 맘에 들지 않게 작동한다.


그래서 코드에서 직접 설정하는 부분을 찾았다.


1
2
3
4
5
6
7
1 int layerMask = 1 << LayerMask.NameToLayer("레이어 이름");    // LayerMask
2 layerMask  = ~layerMask ;    // Invert LayerMask
3 RaycastHit hit;
4 Ray ray = Camera.mainCamera.ScreenPointToRay( screenPos );        // screenPos는 화면상 클릭 좌표
5 bool result = Physics.Raycast( ray, out hit, Infinity, layerMask );
cs


중간에 Ivvert LayerMask는 상황에 따라서 사용하면된다.


중요한점은 첫번째 라인의 내용은 체크하고 싶은 레이어를 선택하는 것이다.

두번째줄을 사용하면 해당 레이어는 체크를 안하는 것으로 된다.


직접 컨트롤 해보면 바로 이해가 될것이다.


1
2
3
4
5
6
int layerMask = (1 << LayerMask.NameToLayer("레이어 명")) + (1 << LayerMask.NameToLayer("레이어 명")); // ignore LayerMask
2 layerMask  = ~layerMask ;    // Invert LayerMask
3 RaycastHit hit;
4 Ray ray = Camera.mainCamera.ScreenPointToRay( screenPos );        // screenPos는 화면상 클릭 좌표
5 bool result = Physics.Raycast( ray, out hit,  Infinity, layerMask );
 
cs


여러 레이어를 설정해야 한다면 + 로 사용하면 됩니다.



반응형

'개발이야기 > Unity & C# 코딩' 카테고리의 다른 글

Unity Scene 정보 받아오기  (0) 2018.07.03
Unity FLOW 설명  (0) 2018.04.07
Unity Sound 옵션  (2) 2018.03.27
Raycast - CircleCast  (0) 2018.03.26
admob 두번째 - 기다려도 광고가 안나와요.... ㅠㅠ  (0) 2018.03.23

+ Recent posts