캐릭터 애니메이션 2 (애니메이션 변경)

지난 시간에는 스페이스키를 누르면 캐릭터가 점프하는 모션을 만들어 봤습니다.
이번에는 방향키의 움직임에 따라 캐릭터의 움직임을 바꿔보도록 하겠습니다.

1.기존 소스에 추가

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainController : MonoBehaviour {

    public Animator animator;
    // 수평과 수직 어느쪽으로 키보드를 눌렀는지 확인할 값 선언
    private float h;
    private float v;

    // Start is called before the first frame update
    void Start() {
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update() {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.Play("JUMP00", -1, 0);
        }
        // 입력한 값의 수평값과 수직값을 변수에 할당
        h = Input.GetAxis("Horizontal");
        v = Input.GetAxis("Vertical");

        // animator에서 쓸 수 있게 변수에 정의
        animator.SetFloat("h", h);
        animator.SetFloat("v", v);

    }
}

위에 선언된 h와 v변수는 누르는 방향키에 따라 -1 ~ 1의 값을 가집니다.
또한 이 값을 애니메이터에서 사용할 수 있게 선언하였습니다.

2.애니메이터 수정

ani

애니메이터에서 여러가지를 설정해야 하는데,
첫번째 스크립트에서 이영한 h,v 변수를 가져와서 사용할 수 있도록 파라미터 선언.
두번째 오른쪽 클릭 -> [Create State] -> [From New Blend Tree] 를 통해 Blend Tree 생성.
세번째는 Blend Tree의 실행조건 설정입니다.
* Blend Tree는 여러가지 모션을 매끄럽게 사용하기 위해 사용합니다. 천천히 걷다가 달리기, 달리다가 방향을 꺾을때의 모션 등에 사용합니다.

ani

[1]번에서 h,v 파라미터를 추가합니다.
[2]번의 Blend Tree를 만들고 실행조건을 앞이나 뒤로 걷고 있을때로 지정합니다.
v, less, -0.1
v. greater, 0.1
이후 게임을 실행하면 키패드의 움직임에 따라 h,v값이 변하는 것을 파라미터 값에서 확인할 수 있습니다.
조건을 설정한뒤 [Has Exit Time]을 해제해 주도록 합니다.
이 옵션은 다른 모션을 기다리지 않고 해당 모션을 바로 실행합니다.

모션의 추가

방향키로 캐릭터가 어느 방향으로 움직이는지 값을 받았으나, 아직 움직일때의 모션은 지정하지 않았습니다.
이때 [Blend Tree]를 더블클릭하여 설정합니다.

ani

추가된 [Blend Tree]의 이름을 WALK00으로 정해주고 타입은 [2D Simple Directional]로 해줍니다.
전후좌우 모션을 4개 추가해 줍니다.
모션을 선택하고 이동할 값을 적어줍니다.
이때 좌우모션은 앞으로 가면서 이동하는게 일반적이므로 Y값도 변경시켜줍니다.
여기까지하고 실행을 해보면 방향키에 따라 키보드가 이동하는것을 확인할 수 있습니다.

완성화면

ani