본문 바로가기
[ Unity ]/- 유니티 실습

유니티 3D 아이템 감지(BoxCast)

by MRG 2024. 10. 2.
728x90
반응형

 

 

▣ 코드 설명
boxSize: BoxCast의 크기를 정의하는 변수로, Vector3 타입으로 x, y, z 축에서 박스의 크기를 설정합니다. 박스의 절반 크기를 사용하여 충돌 감지를 수행합니다.
예: new Vector3(1f, 1f, 1f)는 1x1x1 크기의 박스를 의미합니다.
castDistance: BoxCast가 얼마나 멀리 감지할지를 결정하는 거리 값입니다. 박스가 이 거리만큼 직선으로 나아가며 충돌을 감지합니다.

itemLayer: 감지할 대상의 레이어를 설정하기 위한 변수입니다. 특정 레이어에 속한 오브젝트들만 감지하려면 이 값을 설정합니다.
예: 아이템 레이어를 설정해 불필요한 오브젝트와의 충돌을 무시할 수 있습니다.


debugDuration: 디버그 라인이 화면에 얼마나 오래 보일 지를 설정하는 변수로, Debug.DrawLine과 Debug.DrawRay 함수에 적용됩니다. 값은 초 단위로 설정됩니다.
예: 2f로 설정하면 디버그 라인이 2초 동안 화면에 표시됩니다.


CollectItem() 함수: E 키를 누르면 호출되는 함수로, BoxCast를 실행하여 아이템을 탐지하고 획득하는 기능을 담당합니다.

Physics.BoxCastAll: BoxCast를 사용하여 아이템을 감지합니다. 감지된 오브젝트는 RaycastHit[] 배열에 저장되며, 이 배열을 순회하며 아이템을 처리합니다.
아이템이 감지되면 해당 아이템의 이름을 Debug.Log()로 출력하고, 아이템을 비활성화(SetActive(false))하여 획득 처리합니다.


DebugBoxCast() 함수: BoxCast의 모양과 방향을 시각적으로 확인할 수 있도록 Debug.DrawLine과 Debug.DrawRay를 사용하여 박스의 모서리와 끝점을 그립니다.
이 함수는 박스의 모양을 시각적으로 그리기 위해 8개의 모서리 좌표를 계산하고, 그 모서리들 사이를 연결하는 선을 그립니다.
박스가 진행되는 방향을 Debug.DrawRay로 그려줍니다.

 


▣  주요 Unity API 설명
Physics.BoxCastAll
직육면체 형태의 박스를 기준으로 캐스팅(충돌 감지)을 수행합니다.
감지된 모든 오브젝트를 RaycastHit[] 배열로 반환하며, 이 배열을 순회하여 충돌한 오브젝트들에 대한 처리를 할 수 있습니다.


Debug.DrawRay
시작점과 방향을 지정하여 화면에 레이(선)를 그립니다. 디버깅 목적으로 충돌 또는 경로를 시각적으로 확인할 때 사용합니다.
지속시간을 설정할 수 있으며, 이를 통해 레이가 일정 시간 동안 보이도록 할 수 있습니다.

Debug.DrawLine
두 점 사이에 선을 그려 시각적으로 확인할 수 있는 디버그 도구입니다. 시작점과 끝점을 설정하여 특정 방향이나 경로를 시각화합니다.
지속시간을 설정하여 선이 몇 초 동안 보일지를 제어할 수 있습니다.

 

 

https://docs.unity3d.com/ScriptReference/Physics.BoxCastAll.html

 

Unity - Scripting API: Physics.BoxCastAll

Notes: For colliders that overlap the box at the start of the sweep, RaycastHit.normal is set opposite to the direction of the sweep, RaycastHit.distance is set to zero, and the zero vector gets returned in RaycastHit.point. You might want to check whether

docs.unity3d.com

 

https://docs.unity3d.com/ScriptReference/Debug.DrawRay.html

 

Unity - Scripting API: Debug.DrawRay

The duration parameter determines how long the line will be visible after the frame it is drawn. If duration is 0 (the default) then the line is rendered 1 frame. If depthTest is set to true then the line will be obscured by other objects in the Scene that

docs.unity3d.com

 

https://assetstore.unity.com/packages/3d/characters/survivalist-character-181470

 

Survivalist character | 3D 캐릭터 | Unity Asset Store

Elevate your workflow with the Survivalist character asset from Slayver. Find this & other 캐릭터 options on the Unity Asset Store.

assetstore.unity.com

 

728x90
반응형

댓글