데드존 만들기
: 플레이어 캐릭터가 점프를 하고 제대로 착지하지 못하고 아래로 떨어지는 것을 감지
- Hierarchy창에서 Create->Create Empty 클릭
- Dead 태그 설정 , 이후에 PlayerController 스크립트에서 OnTriggerEnter에서 태그 확인해 줄 예정이다
- Box Collider 2D 컴포넌트 추가 & isTrigger 체크 & 사이즈 조정 해주기 !
플레이어 떨어졌을 때 어디든 감지할 수 있게 위 사진 처럼 Deadzone 사이즈 넉넉하게 !
: Box Collider 대신 Circle Collider 를 사용한 이유는 플레이어가 점프 후 각진 모서리에 안착했을 때 부드럽게 모서리를 타고 올라가도록 하기 위해서 !
애니메이션 만들기
- 상단 메뉴에서 Window-> Animation-> Animation 클릭
- Player 게임오브젝트가 선택된 상태로 애니메이션 창을 보면 Create 버튼이 생겨남 , 클릭
- Run.anim 로 파일명을 작성해서 저장해주고 Sprites에서 플레이어가 뛰어가는 이미지를 전부 선택해서 애니메이션 창의 타임라인으로 드래그&드랍
이때 Samples 는 초당 샘플 프레임을 나타냄 , 애니메이션 속도가 너무 빠르다면 Samples의 숫자를 낮춰주면 된다. (Samples 가 60이라면, 1초에 60번 스프라이트를 교체한다는 의미)
애니메이터 창
- 상단 메뉴에서 Window-> Animation-> Animator클릭
Entry 상태 : 와 전이로 연결된 상태는 가장 먼저 현재 상태로 활성화되는 기본 상태
Exit 상태 : 현재 상태가 Exit 상태로 전이하면 애니메이터 동작이 완전히 종료됨
Any State 상태 : 현재 상태가 무엇이든 상관없이 특정 상태로의 즉시 전이가 가능- 전이 구성 : 해당 상태의 마우스 우클릭-> Make Transition 클릭 후 연결
- Parameter : 전이가 언제 발동될지 결정하는 조건
1) Bool 타입 파라미터 'Grounded', Trigger 타입 파라미터 'Die'
2) 전이 구성
3) Run -> Jump 전이 설정하기Has Exit Time : 종료 시점을 활성화 하는 옵션
-활성화 된 경우 , 현재 상태의 애니메이션 클립의 재생 시간이 종료 시점에 도달 할 때까지 전이가 지연됨
-비활성화 된 경우, 전이 조건을 만족하는 즉시 바로 전이가 실행 됨Transition Duration :
전이가 이루어지는 동안 현재 애니메이션 클립과 다음 애니메이션 클립을 블렌딩해서 부드럽게 이어줌
-0: 마우스 왼쪽 버튼
-1: 마우스 오른쪽 버튼
-2: 마우스 휠 스크롤 버튼
점프 직전에 속도를 0으로 만드는 이유
: 직전까지의 힘이 상쇄되거나 합쳐져서 점프 높이가 비일관적으로 되는 현상을 막기 위해
"플랫포머 게임에서는 점프를 구현할 때 직전 속도에 영향을 받지 않도록 순간적으로 속도를 제로로 만드는 것이 일반적이다."
OnCollisionEnter2D 메서드
: OnCollision 계열의 충돌 이벤트 메서드는 여러 충돌 정보를 담는 Collision 타입의 데이터를 입력받는다.
Collision 타입은 충돌 지점들의 정보를 담는 ContactPoint 타입의 데이터를 contacts 라는 배열 변수로 제공한다. 이때 contacts 배열의 길이는 충돌 지점의 개수와 동일
위의 코드에서 collision.contacts[0]은 두 물체의 가장 첫 번째 충돌 지점의 정보를 나타냄
이때 ~.normal 은 충돌 지점에서 충돌 표면의 방향을 알려준다.
~.normal.y=1 인 경우 : 위쪽
~.normal.y=-1 인 경우 : 아래쪽
0인 경우 : 오른쪽 혹은 왼쪽
즉, 위의 코드에서 노말벡터 값이 0.7이라면 대략 45도 경사를 가진 채 표면이 위로 향한다는 의미 !
의 의미는 첫 번째 충돌 지점 표면의 방향이 '위쪽이며' , '경사가 너무 급하지는 않은지' 를 검사하는 것
1개만 있으면 되는데 Main Camera에 있다.