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

유니티 2D 점프, 더블점프

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

 

 

▣ 코드설명

jumpForce: 점프 시 캐릭터가 얼마나 높이 점프할지를 결정하는 변수입니다.
rb: 캐릭터의 물리적 움직임을 처리하는 Rigidbody2D 컴포넌트를 저장하기 위한 변수입니다.
canDoubleJump: 캐릭터가 더블 점프를 할 수 있는지 여부를 결정하는 불리언 값입니다. 처음에는 false로 설정되며, 더블 점프를 하고 나면 false로 바뀝니다.
isGrounded: 캐릭터가 땅에 있는지 여부를 확인하는 변수입니다.
groundCheck: 캐릭터가 땅에 닿았는지를 확인하는 위치를 나타내는 Transform입니다. 주로 캐릭터 발 밑에 위치합니다.
groundCheckRadius: 캐릭터가 땅에 닿았는지를 확인하기 위해 사용하는 원형 감지 범위의 반지름입니다.
groundLayer: 땅을 감지할 때 사용할 레이어 마스크입니다. 특정 레이어(예: "Ground")에만 반응하도록 설정합니다.

OnJump(): 새로운 Input System에서 점프 입력을 받았을 때 호출됩니다.
첫 번째 점프: isGrounded가 true이면(캐릭터가 땅에 있으면) 점프를 합니다. 이때 rb.velocity를 설정하여 캐릭터를 위쪽으로 이동시킵니다.
더블 점프: isGrounded가 false이지만 canDoubleJump가 true인 경우, 캐릭터가 공중에 있을 때 두 번째 점프를 할 수 있습니다. 더블 점프 후에는 canDoubleJump가 false로 설정되어 더 이상 점프할 수 없도록 합니다.

Update(): 매 프레임마다 호출되며 캐릭터가 땅에 닿아 있는지 확인합니다.
Physics2D.OverlapCircle(): groundCheck 위치에서 groundCheckRadius 크기의 원형 범위를 사용해, 지정된 groundLayer에 속한 오브젝트와 충돌하는지 확인합니다. 만약 충돌한다면, 캐릭터는 땅에 닿아 있다고 판단하고 isGrounded를 true로 설정합니다.
더블 점프 활성화: 만약 캐릭터가 땅에 착지하면(isGrounded가 true), canDoubleJump를 true로 설정해 다음번 공중에서의 점프(더블 점프)를 가능하게 합니다.

OnDrawGizmosSelected(): Unity Editor에서 게임 오브젝트가 선택되었을 때, 디버깅을 돕기 위해 groundCheck의 위치와 감지 범위를 시각적으로 표시합니다. Gizmos.DrawWireSphere()를 사용하여 groundCheck의 위치를 중심으로 groundCheckRadius 크기의 원을 그려서 캐릭터가 땅에 닿는 범위를 시각적으로 확인할 수 있습니다.

 

▣ LayerMask는 유니티에서 특정 레이어에 대한 정보를 다루기 위해 사용하는 구조체입니다. 주로 충돌 감지나 레이캐스트(Raycast) 등에서 특정 레이어를 선택적으로 필터링하기 위해 사용됩니다. 예를 들어, 여러 오브젝트들이 다양한 레이어에 있을 때, LayerMask를 통해 특정 레이어에 있는 오브젝트만 감지할 수 있습니다.

▣ LayerMask의 주요 역할
LayerMask는 비트 마스크(bitmask) 방식으로 특정 레이어(들)를 선택적으로 처리할 수 있게 해줍니다. 게임 오브젝트가 속한 레이어를 설정하고, 그 레이어에 대한 충돌이나 감지를 효율적으로 처리할 수 있습니다.

▣ 주요 용도:
충돌 감지: 플레이어가 땅에 착지했는지 확인할 때, 특정 레이어(예: "Ground" 레이어)만 충돌 검사에 포함시킬 수 있습니다.
레이캐스트 필터링: Raycast를 사용할 때 특정 레이어만 타겟으로 삼도록 할 수 있습니다. 예를 들어, "Enemy" 레이어에 있는 오브젝트에만 레이캐스트를 발사하는 경우입니다.

 

 

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

 

Unity - Scripting API: Physics2D.OverlapCircle

The circle is defined by its centre coordinate in world space and by its radius. The optional layerMask allows the test to check only for objects on specific layers. Although the Z axis is not relevant for rendering or collisions in 2D, you can use the min

docs.unity3d.com

 

https://docs.unity3d.com/ScriptReference/Rigidbody2D.html

 

Unity - Scripting API: Rigidbody2D

The Rigidbody2D class essentially provides the same functionality in 2D that the Rigidbody class provides in 3D. Adding a Rigidbody2D component to a sprite puts it under the control of the physics engine. By itself, this means that the sprite will be affec

docs.unity3d.com

https://docs.unity3d.com/ScriptReference/LayerMask.html

 

Unity - Scripting API: LayerMask

A GameObject can use up to 32 LayerMasks supported by the Editor. The first 8 of these Layers are specified by Unity; the following 24 are controllable by the user. Bitmasks represent the 32 Layers and define them as true or false. Each bitmask describes w

docs.unity3d.com

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

 

Unity - Scripting API: Physics2D.OverlapCircle

The circle is defined by its centre coordinate in world space and by its radius. The optional layerMask allows the test to check only for objects on specific layers. Although the Z axis is not relevant for rendering or collisions in 2D, you can use the min

docs.unity3d.com

 

728x90
반응형

'[ Unity ] > - 유니티 실습' 카테고리의 다른 글

유니티 콜리전 범위 시각화  (0) 2024.09.11
유니티 2D Object Ping Pong  (0) 2024.09.11
유니티 쿼터니언(Quaternion)과 회전  (3) 2024.09.09
유니티 싱글톤  (4) 2024.09.08
유니티 3D ParticleSystem  (0) 2024.09.08

댓글