캐릭터 만들기

Asset에서 캐릭터 그림파일을 추가한 뒤, 빈 오브젝트에 이미지를 넣어준다.

 

이미지 파일의 크기를 조절하는 방법에는 여러가지 방법이 있다.

  • Main Camera - Camera Size 조절

카메라 사이즈가 커지면 캐릭터가 작아보이는 것을 이용한다.

 

  • Scale값 조절

 

  • PPU값 조절

 

 

캐릭터 이동

캐릭터 이동은 이전 글 중 <Unity> 입문 - 2D 게임 개발(2)의 입력과 캐릭터 이동 부분을 참고하자.

Legacy 형태는 짧지만 객체지향에 위배되는 코드이기 때문에 지양하는 것이 좋으며, Input System 방식의 객체지향 형식으로 코드를 쓰는 것이 좋다. 그러나 간단하게 테스트용으로 쓰이기도 하므로 알아두는 것이 좋다.

 

방 만들기

방 만들기 역시 <Unity> 입문 - 2D 게임 개발(3)의 타일맵 부분을 참고하면 된다.

캐릭터의 Rigidbody 2D와 타일의 Collider가 충돌이 일어나면 실제 물리 충돌이 일어나는데 그로 인해 캐릭터가 빙글빙글 도는 현상이 일어난다. 그것을 방지하기 위해 Rigidbody 2D - Constraints - Freeze Rotation의 Z을 체크해준다.

 

타일맵을 찍을 때 Edit - Preference - Tile Palette에서 기본툴 외의 다른 툴들을 추가해서 사용할 수 있다.

 

캐릭터 애니메이션 추가

애니메이터 창을 열어 기본 상태 애니메이션에 걷는 애니메이션을 추가해준 뒤, 서로 연결해준다.

 

Stand에서 Walk로 가는 Transition을 클릭하여 Has Exit Time 체크를 해제하고, Conditions를 추가해서 Walk를 true로 바꿔준다.

 

Walk에서 Stand로 가는 Transition 마찬가지로 Has Exit Time 체크를 해제하고, 이번엔 Walk를 false로 바꿔준다.

Has Exit Time는 종료 시점을 활성화하는 옵션으로 종료 시점의 비율만큼 애니메이션이 재생된 후에 다음 상태로 전이된다. 즉시 재생시키고 싶다면 비활성화 해야한다.

 

이제 위에서 만든 애니메이션을 관리하기 위해 스크립트를 만든다.

움직일 때 Walk로 전환 즉, 키를 입력받았을 때 전환시키려면 InputController가 필요하기 때문에 컨트롤러를 불러온다.

PlayerInputController controller;

[SerializeField] private Animator anim;

private void Awake()
{
    controller = GetComponent<PlayerInputController>();
}

void Start()
{
    controller.OnMoveEvent += Animation;
}

void Animation(Vector2 direction)
{
    anim.SetBool("walk", direction.magnitude > 0f);
}

 

 

+ Recent posts