본문 바로가기

Unity

[Unity] RaycastHit2D를 이용한 플레이어 점프 구현

728x90

플레이어 점프(중복 점프는 허용하지 않습니다.)를 구현하고, 애니메이션도 적용합니다.

 

RaycastHit2D 컴포넌트는 광선의 경로에 따라 놓여 있는 물체를 감지하는 데 사용되며 개념적으로 레이저 빔을 대상으로 발사하여 어떤 물체에 부딪혔는지 관찰하는 것과 같다. 레이캐스트 및 기타 기능은 레이캐스트에 의해 탐지된 객체에 대한 정보를 반환한다.

 

애니메이션 컨트롤러

우선 Player_Jump 애니메이션을 만들고 isJump 파라미터를 추가해준다. 이때 Player_Idle, Player_Walk, Player_Jump는 서로 상호작용을 해야하기 때문에 각각 트랜지션을 만들어주어 관리한다.

 

Jump() 코드 구현

만약 점프키가 눌리고 점프 애니메이션이 동작 중이지 않다면 플레이어가 점프를 할 수 있게 해준다.해 준다. 그리고 플레이어가 점프를 한다면 애니메이션 컨트롤러의 isJump 파라미터를 true로 바꿔줘서 점프 애니메이션이 동작할  수 있게 해 준다.

 

이때 !anim.GetBool("isJump") 조건을 넣어주지 않는다면 무한 점프가 가능하게 된다.

 

무한 점프

다음은 플레이어 착지에 관한 코드이다.

 

LandingJump() 함수 코드

만약 플레이어가 착지 중에 있다면 레이캐스트를 만드는데 위치는 플레이어, 방향은 아래, 길이는 1 만큼이고, Ground라는 레이어를 가져온다.

 

만약 레이캐스트가 null값이 아니고, Ground 레이어와 래이캐스트의 거리가 0.5f 이하로 줄어들게 된다면 애니메이션의 isJump 파라미터를 false로 바꿔줘서 점프 애니메이션을 끝나게 해 준다.

 

결과 화면

728x90