반응형
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 |