
Entry : 시작
Any State : 모든 상태
Exit : 종료
우클릭 -> Make Transition으로 Transition(화살표) 생성
Parameters에서 파라미터 생성 가능 (Float, Int, Bool, Trigger)
Transition을 클릭하여 Inspector 창에서의 다양한 제어
Settings에서
Conditions에서
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
public Vector2 inputVec;
public float speed;
Rigidbody2D rigid;
SpriteRenderer spriter;
Animator anim;
void Awake()
{
rigid = GetComponent<Rigidbody2D>();
spriter = GetComponent<SpriteRenderer>();
anim = GetComponent<Animator>();
}
void FixedUpdate()
{
Vector2 nextVec = inputVec * speed * Time.fixedDeltaTime;
rigid.MovePosition(rigid.position + nextVec);
}
void OnMove(InputValue value)
{
inputVec = value.Get<Vector2>();
}
void LateUpdate()
{
anim.SetFloat("Speed", inputVec.magnitude);
if (inputVec.x != 0) {
spriter.flipX = inputVec.x < 0;
}
}
}
SpriteRenderer spriter; Animator anim;
SpriteRenderer과 Animator 컴포넌트를 참조할 수 있는 변수 spriter과 anim을 선언한다.
Update 계열 함수(프레임 단위로 호출되는)이며, 다른 모든 Update 계열 함수가 호출된 후 마지막으로 호출된다.
void LateUpdate() { anim.SetFloat("Speed", inputVec.magnitude); if (inputVec.x != 0) { spriter.flipX = inputVec.x < 0; } }
기존 Animator Controller를 상속하여 사용할 수 있는 Animator Controller이다.
생성 후 Inspector에서 Controller 파라미터에 상속받을 기존 Animator Controller를 할당한다.
그 밑 Override 칸에 각각의 새로운 애니메이션 (필요하다면) 또한 할당한다.
MonoBehaviour 클래스를 상속받는 Player 클래스의 스크립트이다.
이동을 위한 방향키 입력값을 벡터로 받는 inputVec 변수, 이동 속도를 정의하는 speed 변수, Rigidbody2D 컴포넌트를 참조할 수 있는 rigid 변수를 각각 정의한다.
Awake 함수에서는 초기화를 수행한다. Player 오브젝트에 부착된 Rigidbody2D 컴포넌트를 rigid 변수가 참조하도록 한다.
OnMove 함수에서는 방향키 입력을 제어한다. value 매개변수로 입력값을 받아온 후, inputVec 변수에 벡터 형태로 변환하여 대입한다.
FixedUpdate 함수에서는 플레이어의 이동을 제어한다. 우선 Player가 현재 위치로부터 이동해야 할 벡터값을 계산한다. 이는 inputVec값에 speed 변수의 값과 다음 FixedUpdate 호출까지의 시간 간격 값을 전부 곱한 것과 같다. 그 다음 rigid(= Player에 부착된 Rigidbody2D 컴포넌트)가 rigid의 현재 위치 + 앞에서 계산된 벡터값의 위치에 놓이도록 한다. 이를 일정한 시간 간격으로 수행한다.
LateUpdate 함수에서는 플레이어의 애니메이션을 제어한다. anim 변수를 통해 Animator에 접근 후 Speed 파라미터에 inputVec의 크기를 대입하여 애니메이션 상태간의 Transition을 조정한다. 또한 방향키 입력값이 존재할 때, inputVec 값의 부호에 따라 spriter 변수를 통해 SpriteRenderer에 접근하여 flip 체크박스의 상태를 제어한다.
출처 :
링크텍스트