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

유니티 2D RayCast활용 아이템획득

by MRG 2024. 9. 25.
728x90
반응형

 

▣ 코드 내 주요 함수 및 개념 설명:
Input.GetKeyDown(KeyCode.E):
E 키가 눌렸을 때 실행되는 조건입니다. 이 조건을 만족하면 그 아래의 코드를 실행합니다.
KeyCode.E는 E 키를 나타내며, 키 입력을 감지하는 데 사용됩니다.

▣ Debug.DrawLine():
화면에 선을 그려주는 디버그용 함수입니다. 여기서는 플레이어의 위치에서 오른쪽으로 1 단위 거리만큼 빨간색 선을 그려줍니다.
이 선은 Raycast의 탐지 범위를 시각적으로 보여주기 위한 용도로 사용됩니다. 게임 중 1초 동안 선이 표시됩니다.


▣ Physics2D.Raycast():
플레이어 위치에서 오른쪽으로 Raycast를 쏘아 weaponMake 레이어에 속한 오브젝트를 탐지하는 함수입니다.
RaycastHit2D 객체인 hit에 탐지된 물체에 대한 정보가 저장됩니다. 충돌한 오브젝트가 있으면 hit.collider는 null이 아닙니다.


▣ hit.collider.tag:
충돌한 오브젝트의 태그를 확인하는 부분입니다. 여기서는 충돌한 오브젝트가 Pistol인지 ShotGun인지 태그를 확인하여 각각의 처리로 나뉩니다.


▣ SetParent():
hit.collider.transform.SetParent(transform)은 탐지된 무기를 플레이어 오브젝트의 자식 오브젝트로 설정하는 함수입니다. 즉, 플레이어가 해당 무기를 장착하게 됩니다.


▣ localPosition = Vector3.zero:
장착된 무기의 위치를 플레이어와 동일하게 설정하기 위해 localPosition을 (0, 0, 0)으로 설정합니다. 이렇게 하면 무기가 플레이어의 위치와 정확히 일치하게 됩니다.

 

 

▣ DisableBoxCastVisualization()
BoxCast의 시각화 상태를 일정 시간 후 비활성화합니다.
Invoke 함수로 호출되며, 0.5초 후에 isCasting을 false로 설정하여 시각화를 중지합니다.


▣ DrawBoxCastInScene()
BoxCast의 네 모서리 좌표를 계산하고, 그 좌표를 사용해 사각형을 그립니다.
Debug.DrawLine 함수로 각 모서리를 연결하여 사각형 모양의 BoxCast를 화면에 그립니다.
사각형은 네 개의 선으로 구성되며, 녹색으로 표시됩니다.

 

 

https://docs.unity3d.com/ScriptReference/Physics2D.BoxCast.html

 

Unity - Scripting API: Physics2D.BoxCast

A BoxCast is conceptually like dragging a box through the Scene in a particular direction. Any object making contact with the box can be detected and reported. This function returns a RaycastHit2D object with a reference to the Collider that is hit by the

docs.unity3d.com

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

 

Unity - Scripting API: Debug.DrawLine

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html

 

Unity - Scripting API: MonoBehaviour.Invoke

If time is set to 0 and Invoke is called before the first frame update, the method is invoked at the next Update cycle before MonoBehaviour.Update. In this case, it's better to call the function directly. Note: Setting time to negative values is identical

docs.unity3d.com

 

728x90
반응형

댓글