관리 메뉴

Unwound Developer

유니티 - 2D 런 게임, 플레이어 스크립트 본문

Unity/Unity, C#

유니티 - 2D 런 게임, 플레이어 스크립트

unwind 2022. 1. 11. 16:21
반응형

2D 런게임의 플레이어 스크립트입니다.

중요했던 것같은 부분만 보면..

 

일단 Start메소드에서 GetComponent를 통해 각 컴포넌트에 대한 객체를 생성했어요.

isGrounded나 isDead는 아까 애니메이션 설정에서 파라메터로 있던 녀석들을 컨트롤하기 위한 변수이구요.

 

Update 메소드에서는 사용자 입력 감지와 처리를 합니다.

일단 플레이어가 죽었는데 움직이면 안되니까, 맨 위에서 확인해줘요. 죽었다면 return으로 그냥 종료됩니다.

 

그리고, 마우스가 클릭되었고, JumpCount가 2 미만이라면, 점프 실행해줍니다.

JumpCount는 2단 점프를 위해 있는 것이구요.

점프하기전에, 속도를 0으로 만드는 이유는 가속때문이에요.

2단 점프를 할때, 속도가 0이 아닌 상태에서 또 다시 힘을 가하면 생각한 것 이상의 점프가 가능해져버려요..

그래서, 보통 게임에서도 2단점프 등을 구현할땐, 속도를 0으로 만들어준대요.

 

그리고 나서 AddForce를 통해 Y축으로 힘을 가해줘요.

 

이 때, playerAudio메소드에서 Play를 시켜요. 처음에 Player에게 Jump 오디오소스를 할당했었죠?

Play메소드는 Jump 오디오소스를 발생시킬거에요.

 

SetTrigger는 아까 애니메이션 설정에서 파라메터로 주었던 Grounded와 Die 중 하나였죠?

여기서 파라메터로 Die를 넘겨주는거에요. 그럼 애니메이션이 AnyState에서 Die로 전이가 될거에요.

 

그리고 Jump 오디오소스가 할당되어있을텐데, deathClip이라는 오디오소스를 할당해줘요.

그리고 죽는소리를 Play하고, 속도도 0으로 만들어줍니다.

죽음을 판별하는 변수인 isDead도 true로 해줍니다.

 

OnTriggerEnder2D는 다른 오브젝트와의 충돌을 감지해요.

 

OnCollisionEnter2D는 바닥에 닿았는지를 감지하구요.

조건문의 내용은 플레이어가 모서리에 닿았을때 너무 아래쪽에 닿으면 닿지 않은것으로,

그보다 위쪽에 닿으면 닿은것으로 판단하는 내용이에요.

그 조건이 0.7보다 contact.normal.y 의 값이 크고 작음으로 판별하는 것이구요.

 

collision타입은 충돌 지점의 정보를 contacts라는 변수에 담아요.

그 변수의 노말벡터의 y 값을 불러오는게 위의 코드이구요.

 

0.7이면 45도 각도 정도까진 성공으로 쳐주는거에요.

45도 보다 비탈지면 착지에 실패한 것이구요.

 

이제 저장한 후에 플레이어 스크립트의 deatclip에 죽는소리만 할당해주면 플레이어 스크립트도 끝입니다.

반응형