Learning
When: 1학년 7월 21일
How:
학기 초에 팀플에서 선배님의 도움을 받아 레이캐스트를 한번 사용해 보았지만 다시 쓰려니 하나도 기억이 나지 않아 이번엔 조금 더 자세하게 공부해야 할 것 같아서 공부를 하게 되었습니다.
Understanding:
- 정의 : ~캐스트는 콜라이더를 감지하는 무언가를 일직선으로 날렸을 때 생기는 영역입니다. 레이캐스트는 점을 일직선으로 n만큼 날렸을 때 생기는 선이 영역이 되고, 박스 캐스트는 박스를 날렸을 때 생기는 직사각형 모양의 영역이 됩니다. 모래사장에서 특정한 모양을 밀었을 때 남는 자국이라고 생각하시면 편합니다. 일단 이렇게 설명하면 대충 어떤 방식으로 콜라이더를 감지하는지는 대충 예상하실 수 있으실 텐데, 여기서 선은 그렇다 쳐도 박스캐스트는 그냥 오버랩 박스로 대체할 수 있지 않을까 하는 의문점입니다. (저는 그랬습니다.)
- 왜 쓸까 : ~캐스트는 범위에 있는 콜라이더를 반환한다는 것은 오버랩 ~와 같지만, 커다랗다면 커다랗고 작다면 작은 차이가 하나 있습니다. ~캐스트는 아까 말했듯이 무언가를 날렸을 때 생기는 자국이고, 오버랩 ~는 도장처럼 특정한 모양으로 범위를 꾹 찍었을 때 생기는 자국이기 때문에 ~캐스트는 "무엇이 먼저 닿았는지"를 알 수 있습니다.
| 메서드 | 모양 | 사용 예시 |
| Physics2D.RayCast() | 선 모양 (점을 날림) | 바닥 감지할 때 |
| Physics2D.BoxCast() | 사각형 모양 (사각형을 날림) | 플레이어의 몸통처럼 넓은 범위를 감지할 때 |
| Physics2D.CircleCast() | 캡슐 또는 원 모양 (원을 날림) | 원형 구체를 날리는 공격의 범위를 감지할 때 |
| Physics2D.CapsuleCast() | 캡슐 또는 모서리가 둥근 사각형 모양 (캡슐을 날림) | 캡슐 모양의 공격의 범위 감지할 때 |
| Physics2D.~CastAll() | ~부분에 있는 캐스트의 모양과 같음 | 닿은 모든 콜라이더를 감지할 때 |
- 사용법 : 아래의 코드와 같이 오버로드로 매개변수가 6개까지 있고, 앞의 2개가 필수 매개 변수입니다. 순서대로 설명을 드리자면
- start : 시작할 좌표입니다. Vector2 또는 Vector3 자료형입니다.
- dir : 방향입니다. Vector2 또는 Vector3 자료형이지만 방향이기 때문에 normalized로 정규화를 해주셔야 합니다.
- distance : 길이입니다. 정한 모양을 얼마나 멀리 날릴지 정한다고 보시면 됩니다. float 자료형입니다. 선언하지 않는다면 길이는 무한입니다.
- layerMask : 특정한 레이어만 감지할 수 있습니다. int로 레이어의 번호를 입력할 수 있고, 레이어 마스크 자료형을 넣을 수도 있습니다.
- min/maxZ : cast는 일반적으로 모든 z 좌표를 전부 감지하기 때문에 특정한 z좌표만 감지하게 할 수 있습니다. flaot 자료형입니다.
- BoxCast : Area가 있습니다. 그리고 dir가 좀 다른데, Area는 Vector2 형식으로 사각형의 x,y 길이를 입력할 수 있고 dir는 float 형식으로, 즉 각도로 계산됩니다.
- CircleCast : radius가 있습니다. radius는 말 그대로 원의 반지름입니다.
- CapsuleCast : Area와 CapsuleDirection2D가 있습니다. Area는 캡슐의 x, y 길이를 입력하는 Vector2 타입이고, CapsuleDirection2D.Vertical/Horizontal 으로 캡슐의 방향을 정할 수 있습니다.
Result: 레이캐스트는 많이 사용할 것 같아서 살짝 세세하게 정리해봤는데 오버랩 박스와 레이캐스트를 적절히 사용하는 방법도 공부해야 할 것 같습니다.
'UnityEngine' 카테고리의 다른 글
| [Unity] 블랜드 트리(Blend Tree) (3) | 2025.08.16 |
|---|---|
| [Unity] DOTween (1) | 2025.08.14 |
| [Unity] SceneManager (0) | 2025.07.21 |
| [Unity] 싱글톤 패턴 (2) | 2025.07.12 |
| [Unity] Overlap~ (2) | 2025.07.10 |