3D와 큰 차이는 없음
주요 특징으로는
스프라이트타입으로 임포트직교(Orthographic) 모드(=두 선이 교차하는것) 사용
발판에 물리적 표면 추가하기 위해 박스 콜라이더 2D 컴포넌트 사용

사진의 초록색 박스 영역이 바로 DeadZone
Tag를 Dead로 수정하였다.
여러 이미지를 하나의 이미지로 합친 것.
캐릭터가 연속적으로 움직이는 모습을 여러 이미지 파일로 만드는 것 보다, 이렇게 스프라이트 시트 하나로 관리하는 것이 훨씬 더 편함
Unity는 기본적으로 싱글 스프라이트 모드로 가져옴
멀티플 스프라이트 모드로 바꾸어서 하나의 스프라이트를 여러개의 개별 스프라이트로 잘라서 사용 가능




리지드바디 2D 컴포넌트의 충돌 감지 방식에는 두가지가 존재

Player 컴포넌트에 오디오소스 컴포넌트를 추가.
다만, 이 오디오 소스 컴포넌트는 소리를 재생하는 부품의 역할, 소리를 담은 파일 그 자체가 아님.
Play On Awake
오디오 소스 컴포넌트 활성화시 최초 1회 오디오 자동 재생
오디오 리스터
오디오 소스 컴포넌트가 소리를 재생해도 소리를 듣는 오디오 리스너 컴포넌트가 없으면 재생되는 소리가 들리지 않음
오디오 소스 컴포넌트는 소리를 내는 오브젝트의 수 만큼 씬에 존재하지만, 오디오 리스너는 씬에 하나만 있어야 함.
씬을 추가 하면 자동으로 생성되는 Main Camera에 리스너가 자동으로 달려 있음


애니매이션 편집창에 에셋을 드래그 앤 드롭으로 추가하면 편집 가능
애니매이션은 기본값으로 반복 재생되는 루프 재생이 활성화
유한한 갯수의 상태가 존재, 한번에 하나의 상태만 현재 상태가 되도록 프로그램을 설계하는 모델
다른 상태로 전이 하여 현재 상태를 전환

위 애니메이터 컨트롤러는 유한 상태 머신을 사용하는 상태도를 보여줌
애니메이터 컨트롤러 = 에셋
에니메이터 = 컴포넌트
따라서 애니메이션을 재생하려면, 애니메이터 컨트롤러와 애니메이터 컴포넌트 모두가 필요함
애니메이터 컨트롤러에서 화살표를 통해 간단히 전이 표현 가능
전이의 조건은 파라미터를 이용
파라미터는 다음과 같음

f (Input.GetMouseButtonDown(0) && jumpCount < 2)
{
jumpCount++;
playerRigidbody.velocity = Vector2.zero;
playerRigidbody.AddForce(new Vector2(0, jumpForce));
playerAudio.Play();
}
else if (Input.GetMouseButtonUp(0) && playerRigidbody.velocity.y >0 )
{
playerRigidbody.velocity = playerRigidbody.velocity * 0.5f;
}
마우스 버튼 식별자를 int 타입으로 입력 받음
점프 구현시 직전 속도에 영향을 받지 않게 순간적으로 속도를 0 으로 만듦
만약 속도를 0으로 만들어놓지 않으면 직전까지의 힘과 상쇄 혹은 점프 높이가 비 일관적이게 됨
animator.SetBool("Grounded", isGrounded);
animator.SetTrigger("Die");
Animator Type은 애니메이터의 파라미터값을 변경할 수 있음
private void OnCollisionEnter2D(Collision2D collision) {
// 바닥에 닿았음을 감지하는 처리
if(collision.contacts[0].normal.y > 0.7f)
{
isGrounded = true;
jumpCount = 0;
}
}
OnCollision 계열의 충돌 이벤트, 여러 충돌 정보 담는 Collision 타입의 데이터를 입력받음
이 타입은 충돌 지점의 정보를 contacts라는 배열 로 제공.
이 배열의 길이 = 충돌 지점 개수
contacts[0] 은 즉 첫번째 충돌 지점의 값을 가져옴
if(collision.contacts[0].normal.y > 0.7f)
이후 노말벡터를 사용하여 충돌 표면의 방향을 알려줌
normal.y = 1.0 일 경우 위쪽 방향을 나타냄
0.7f 로 놓아 절벽이나 천장을 바닥을 인식하는 문제를 해결