본문 바로가기

Unity/Unity2D_Flat

Unity2D - 점프

1.점프구현

2. 점프 후 떨어질때 자연스럽게 구현

 (코드로 점프를 구현하고 실행해보면 떨어질때 공기저항때문에 느리게 떨어진다 )

 

-자연스럽게 떨어지게 하는 2가지 방법이 있다.

방법1: Edit - projectSettings -  physics 2D - Gravity의 Y축값을 기본 -9.81에서 -25 등으로 중력가속도 값을 높게 준다

 

방법2 : Player오브젝트의 속성중 RigidBody2D에서 Gravitiy Scale 값을 늘려준다 이는 현재 중력에 대한 비율로

기본 9.81중력 가속도인 상태에서 4를 주면 4배의 중력을 받는다는 뜻이다

Player오브젝트의 jumpPower값과 함께 조절한다

 

 

3.점프 애니메이션 삽입

 

(1) - 점프반복없애기

 Jump Animation Clip에서 Loop Time 체크해제

 

(2) - Animator에서 Paramerters에 isJuping(isJumping인데 오타 ㅎ) 생성후 새로 만든 Jump state를 idle,walk state와 연결 하고 각각 Conditions를 준다 아래는 walk와 Jump state 간의 conditions 설정 예제

 

 

4. Raycast

: 오브젝트 검색을 위해 Ray(빔)을 쏘는 방식

 

(1) DrawRay로 레이져빔 눈으로 확인해보기

*DrawRay() : 에디터상에서만 Ray를 볼 수 있게 그려주는 함수

 

 

(2) -RayCastgHit - Ray(빔)에 닿은 오브젝트

 

 

 

(3) - (2) 에서 rayHit 레이저는 관통을 할 수 없어서 맨 처음 닿은 colider를 반환하기에 Player를 호출하고 있다 

    - LayerMask를 사용하면 RayCastHit는 오로지 LayerMask의 지정된 값을 가진 오브젝트만 레이져로 관찰하게 된다

      LayerMask : 물리효과를 구분하는 정수값

*Player와 floor가 완전히 닿아있을때 ratHit.distance는 콘솔로 확인하니 0.495123였다!

 

 

 

(4) 점프 애니메이션이 점프 할때 발동하고 착지하면 false로 되게 만들기

*2단점프를 방지할때도 rayHit.distance를 쓰려고하기에 update()안으로 옮겼다

*rayHit의 레이져 길이가 짧아서 점프했을때 애초에 바닥과 닿지 않는다면 rayHit.distance는 0으로 나와버린다 ,,,

 따라서 1단점프를 해도 레이져가 충분히 바닥에 닿을 정도로 길이를 조정해주어야 정확한 거리가 나온다

 

 

(5) 2단점프 방지

 

방법1: Update()에서 구현

 

방법2: rayHit는 FiexdUpate()에서 Input.GetButtonDown("Jump")는 update()에서

 

'Unity > Unity2D_Flat' 카테고리의 다른 글

Unity2D - 디버그 및 2단점프  (0) 2020.11.22
Unity2D - 타일맵  (0) 2020.11.18
Unity2D - 이동  (0) 2020.11.13
Unity2D - 애니메이션  (0) 2020.11.13
Unity-2D  (0) 2020.11.13