3D 프로젝트를 하나 만든다.

3D Object Plane을 하나 만들고 Scale을 5로 한다.

Assetstore에서 Toon Fox를 다운받고 import한다. 하이라키에 끌어다 놓는다.

https://assetstore.unity.com/packages/3d/characters/animals/toon-fox-183005

 

Toon Fox | 3D 동물 | Unity Asset Store

Elevate your workflow with the Toon Fox asset from Pxltiger. Find this & other 동물 options on the Unity Asset Store.

assetstore.unity.com

기본적으로 애니메이터가 설정되어 있어 플레이하면 모든 애니메이션을 돌아가면서 보여준다.

프로젝트뷰에서 우클릭 [Create]-[Animator Controller] 를 만든후 이름을 NewFoxAnim으로 한다.

더블클릭해서 Animator를 연다.

Fox/animations폴더에서 Fox_Idle Animation을 끌어다 놓는다.

우클릭후 New Blend Tree를 만들고 이름을 Move로 만든다

Idle과 Transition을 만들어 준다.

Idle과 Move 사이 트랜지션의 컨디션을 다음과 같이 설정하고

양쪽다 Has Exit Time은 언체크하고 Transition Duration은 0.1로 한다

Parameter

s뷰에서 float incX, float incZ, bool move를 만든다.

Move State를 클릭한다.

가운데 Blend Tree를 선택하면 인스펙터가 다음 같이 바뀌고 Blend Type을 2D Simple Directional로 바꾼다.

Parameters를 다음과 같이 바꿔준다.

그다음과 +를 눌러 Add Motion Field를 4개 넣어주고

 

같은 창이 아래 모션을 애니메이션과 연결해준후 PosX PosY값을 설정한다.

BlendTree.cs를 다음과 같이 만들고 Fox에 연결해 준다.

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

public class BlendTree : MonoBehaviour {
    // Start is called before the first frame update
    private Animator anim;  // 애니메이터 컴포넌트를 담을 변수
    private bool isMove;  // Move State 체크용 파라메터
    void Start() {
        anim = GetComponent<Animator>();  //애니메이터 컴포넌트를 받아온다
    }

    // Update is called once per frame
    void Update() {
        float moveSpeed = 3.0f;
        float _x = Input.GetAxisRaw("Horizontal");  //키임력을 받아
        float _z = Input.GetAxisRaw("Vertical");
        Vector3 direction = new Vector3(_x, 0, _z);  //벡터를 만들고
        isMove = false;

        if (direction != Vector3.zero) {
            isMove = true;  //움직임이 있으면 Move State로 간다
            //큐브를 이동시켜주고
            this.transform.Translate(direction.normalized * moveSpeed * Time.deltaTime);
        }
        //애니메이터 파라메터를 설정해준다
        //애니메이터 파라메터를 설정해준다
        anim.SetBool("move", isMove);
        anim.SetFloat("incX", direction.x);
        anim.SetFloat("incZ", direction.z);
    }
}

 

+ Recent posts