스크립트
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
| cs |
많은 변수들과 함수가 생겼다.
추가된 변수 설명
[HideInInspector] : 인스펙터 상에서 변수를 보이지 않게한다.
isFacingRight : 플레이어가 오른쪽을 보고있나요?
isJumping : 점프상태인지 확인
isGrounded : 땅에 붙어있나요? (true : 붙어있음 , false : 안붙어있음)
groundCheck : 그라운드에 붙어있는지 확인하는 체크포인트
groundLayers : 그라운드에 붙어있는지 알 수 있는 레이어 리스트
groundCheckRadius : groundCheck 부터 떨어진 거리
<좌우반전>
이제 플레이어가 움직일 수 있게 되었으니, 좀 더 자연스럽게 보이기 위해서 Player 오브젝트가 이동하는 방향을 바라보게끔 해주려고 한다.
반전 구현
오른쪽으로 움직이고, 플레이어가 왼쪽을 보고 있을 때
왼쪽으로 움직이고, 플레이어가 오른쪽을 보고있을 때
(진행방향과 보고있는 방향이 다를 때)
Flip ( ) 을 호출한다.
Flip ( ) 함수
Player 오브젝트를 좌우 반전시켜주는 함수이다.
1. 우선 반전시켜줄 것이기 때문에 얼굴방향을 돌려준다.
2. PlayerScale 은 transform 컴포넌트의 Scale 값을 가진다.
3. 플레이어 스케일의 x 값에 -1 을 곱해준다.
4. transform 컴포넌트 Scale 의 x 값은 -x 가 된다.
(끝)
반전 끝
<점프>
1. 유니티 상에서 Ground 레이어 셋팅 - 점프준비
Player 오브젝트가 Ground 에 붙어있는지 확인하는 이유는 다중 점프(람각)를 방지하기 위해서 이다. 플레이어 오브젝트를 점프시키는 것은 좌우로 이동시키는 것과 같은 원리이기 때문에 (x 값 대신 y 값에 힘을 준다.) 따로 설정을 안해주면 연타로 인한 다중 점프가 가능하다.
따라서 플레이어가 Ground 레이어에 붙어있는지 확인을 하고, 붙어있다면 점프가능, 떨어져 있다면 불가능하게 만들어줄 필요가있다.
1. Ground 레이어를 추가해준다.
[HideInInspector] 를 써준 애들은 안보인다.
2. Hierarchy 의 Player 오브젝트를 Ground Check 로 드래그해준다.
3. Ground Layers 를 그라운드로 바꿔준다.
Ground Check 에 플레이어 오브젝트를 넣었으니
플레이어 발 아래 파란점이 체크 포인트가 된다.
4. 바닥을 구성하는 모든 오브젝트의 레이어를 Ground 로 바꿔준다.
(셋팅 끝)
2. Physics2D.OverlapCircle
겹치는 부분을 판단해 충돌여부를 감시한다. 정확하고 미세한 작업이다. 3가지의 설정이 들어가 있는데 groundCheckRadius 만큼의 반경을 가지고 있는 groundCheck.position 이 groundLayer 와 겹치는가(닿고있는가)? 정도로 해석할 수 있다.
붙어있다면 isGrounded 는 true 가 된다.
3. 점프 구현
Input.GetKeyDown(KeyCode.Space) : 스페이스바 입력을 받는다.
땅에 붙어있다면 y 값으로 jumpForce 만큼의 힘을 준다.
3번째 줄에서 x 값을 유지하고 y 값을 0으로 고정시킨 이유는
경사면에서의 추가 점프를 방지하기 위해서이다.
굳
느낀점:
내용이 별로 없을 줄 알았는데, 예상보다 엄청 긴 포스팅이 되었다.
'2017 > Unity2D' 카테고리의 다른 글
[책 따라하기] 8-2. 충돌체를 설정하자 (0) | 2016.07.22 |
---|---|
[책 따라하기] 8-1. 플레이어를 움직여보자 (0) | 2016.07.21 |
[책 따라하기] 7. 레이어 정렬 (0) | 2016.07.21 |
[책 따라하기] 6. 맵 제작 (1) | 2016.07.20 |
[책 따라하기] 5. 스프라이트 에디터 (0) | 2016.07.20 |