벡터 정의 참조:wergia.tistory.com/209
*일반적인 벡터는 방향과 크기를 다 가지고 벡터를 정규화하면 방향만 가지고 있으며 스칼라값을 곱해서 크기를 준다..
1.Player 키보드로 좌우이동 구현
*수정)키보드를 누르는 정도에따라 점진적으로 실수량증가는 Input.GetAxis()이고
아래의Input.GetAxisRaw()는 키보드를 누를때마다
-1 or 0 or 1씩 크기가 감소하거나 증가한다
2.Player 최대속력제한
3.최대속력 변수화
*캐릭터가 데굴데굴 구를때 해결법
)Rigidbody2D의 -constratints - Freeze Rotatin Z를 체크해준다!
4. 나중에 오르막길을 올라가기 구현하기 위해서는 바닥의 마찰력을 빼주어야 한다
따라서 바닥의 마찰력을 빼준상태에서 자연스러운 캐릭터이동을 구현해보자
*캐릭터의 콜라이더를 기존 박스 콜라이더에서 캡슐 콜라이더로 바꿔주자 그래야 가끔 오브젝트 콜라이더끼리
모서리가 낑겨서 멈추는 버그가 해결된다
(1) - 바닥오브젝트의 마찰력빼기
- create에서 physical Mateial 2D를 생성하고 마찰력을 0으로 준다음 모든 바닥 오브젝트안으로 드래그앤 드롭
(colider2D 안의 Material 속성에 들어감)
(2) - 캐릭터의 Rigidbody2D 속성안에 있는 Linear Drag(공기저항)을 늘린다
- 이렇게 되면 바닥과 마찰력이 0인상태에서도 진행중에 멈추었을때 자연스러움을 구현할 수는 있지만
좌우이동일때만 해당하는이야기 이고 공중에서 떨어질때도 공기저항을 받아서 위아래 움직임은 부자연 스럽다
(3) 공기저항을 최소로하고(공중상태에서의 자연스러움을 위해) 좌우 이동중 멈추었을때 속력을 갑자기 줄이도록 코딩!
(4) 캐릭터의 좌우 반전을 구현
Sprite Renderer의 Flip 기능을 이용하자 Flip은 c#코드상에서 FlipX와 FlipY로 나뉘며 기본값은 false로
체크가 되면 반전이 되면서 True로 변하는 Bool값이다
-강의에서는 주석부분으로 Flip을 처리했지만 저렇게 할 경우 GetAxisRaw("Horizontal") 즉 좌우를 동시에 눌러서
그 값이 0이 되버리면 캐릭터가 Flip을 하지 않고 앞을보며 뒤로 걷는 경우가 생긴다
- 따라서 나는 속력의 방향에 따라 Flip이 구현되게 코딩하였다.
5.애니메이션 변화 구현
(1) - Player - Animator에서 state(상태바) 우클릭 후 Make Transition(애니메이션 상태를 옮겨가는 통로)을 하면 다음 state 끼리를 이어준다
(2) - 왼쪽 상단에 Parameters가 있는데 이것은 애니메이션 매개변수로 state 즉 상태를 바꿀때 필요한 변수이다
- iswalking을 생성하고 idle상태과 walk상태를 이어주는 화살표를 클릭하면 상태창이 나오는데
- Has Exit Time(애니메이션이 끝날때까지 상태를 유지)를 체크해제 한다 예를 들어 조금만 걷다가 멈출때 걷는
애니메이션이 남아있다고 해서 그걸 끝까지 실행시켜버리면 멈췄는데도 걷는 애니메이션이 나오는 상황이 연출..
-Setting에서 idle상태과 walk상태가 겹치지 않게 해준다 이는 모션연셜을 부드럽게 해주는것이다
이 예제에서는 없는게 어울린다
- Conditions 는 idle상태에서 walk 상태로 가는 통로를 어떠한 조건일때 열어주느냐에 대한것이다 따라서 플레이어 iswalking 즉 걷는것이 true가 될때 상태를 바꿔주도록 한다 (이 후 코드에서 관련 코드를 작성할 예정)
- walk 상태도 마찬가지로 idle 방향으로 Make Transition을 주고 설정을 한다
Conditions는 iswalking이 false일때로 설정!
(3) - 코드와 연동할 수 있도록 스크립트 작성
애니메이터안의 파라미터를 가져와서 값을 변경하는법!
*애니메이터컴포넌트.Set자료형("자료이름", 바꿀값);
위처럼 코드를 작성하면 게임상의 캐릭터가 멈추어도 속력이 남아있기 때문에 0이될때까지 걷는 모션을 한다
이를 보안하여 아래처럼
현재 캐릭터의 속도의 절대값(왼쪽은 - 이기 때문에!)이 0.1보다 작을 경우에 걷는 모션을 false로 하고
그렇지 않을경우 true를 준다!!
'Unity > Unity2D_Flat' 카테고리의 다른 글
Unity2D - 디버그 및 2단점프 (0) | 2020.11.22 |
---|---|
Unity2D - 타일맵 (0) | 2020.11.18 |
Unity2D - 점프 (0) | 2020.11.18 |
Unity2D - 애니메이션 (0) | 2020.11.13 |
Unity-2D (0) | 2020.11.13 |