3D 프로젝트를 하나 만든다.
3D Object Plane을 하나 만들고 Scale을 5로 한다.
Assetstore에서 Toon Fox를 다운받고 import한다. 하이라키에 끌어다 놓는다.
https://assetstore.unity.com/packages/3d/characters/animals/toon-fox-183005
기본적으로 애니메이터가 설정되어 있어 플레이하면 모든 애니메이션을 돌아가면서 보여준다.
프로젝트뷰에서 우클릭 [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);
}
}
'유니티스크립팅 > Animation Rigging' 카테고리의 다른 글
[Animation Rigging] 애니메이션 리깅 (0) | 2023.04.06 |
---|---|
[Animation Rigging] Dungeon Skeletons BlendTree (0) | 2023.04.06 |