์ด์ ์บ๋ฆญํฐ ์ด๋๊ตฌํ์ ์ด์ด์ ์ ๋๋ฉ์ด์ ์ ์ฉ ๋ฐฉ๋ฒ์ด๋ค.
์ด๋ฒ์๋ YHJ๋์ด ์ ์ํ์ ์์ ์ ์ฌ์ฉํ๋ค.
์ฌ์ค ์ค๋น๋ ์ ์
๋ง ์๋ค๋ฉด ๊ฐ๋จํ๋ฐ ์ฐ์ ์ ๋๋ฉ์ด์
์ผ๋ก ๋ณํ๋ ์ฐ์๋ ์คํ๋ผ์ดํธ๋ฅผ ์ ์ฒด ์ ํํด์ค๋ค.

๊ทธ๋ฆฌ๊ณ ๋๋๊ทธํด์ Hierarchy ์ฌ์ ์ฌ๋ฆฌ๋ฉด

์ด๋ฐ ์ฐฝ์ด ๋จ๋๋ฐ ์ํ๋ ์ด๋ฆ๊ณผ ์ ์ฅ ์์น๋ฅผ ์ค์ ํด์ฃผ๊ณ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.

์๋ฐ ๋ฐฉ๋ฒ์ผ๋ก ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค์ด ์ฃผ๋ฉด

์ด๋ฐ ํ๋ฉด์ด ์์ฑ๋๋๋ฐ
์ฐ์ ํ๋ผ๋ฏธํฐ ๋ถํฐ ์์๋ณด์

์ผ์ชฝ ์ +๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค๊ฐ์ง ํ์
์ ํ๋ผ๋ฏธํฐ๋ฅผ ์์ฑํ ์ ์๋๋ฐ
์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉํ๋ ๋ณ์ ๋๋์ผ๋ก ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
์คํฌ๋ฆฝํธ์์ ๊ฐ์ ์ ๋ฌํด์ ์ํ๋ ์กฐ๊ฑด์ ์ํ๋ ์ ๋๋ฉ์ด์ ์ ์๋ํ๊ฒ ๋ง๋ค ์ ์๋๋ฐ Float, Int, Bool์ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉํ๋ ์ฉ๋์ ๊ฐ๊ณ
Trigger๋ ๋ค๋ฅธ ํ๋ผ๋ฏธํฐ๋ค๊ณผ ๋ค๋ฅด๊ฒ ํ๋ฒ ์ ํธ๋ฅผ์ฃผ๋ฉด ํ๋ฒ๋ง ๋ฐ์ํ๋ค.
์ด์ ์ํ๋ฅผ ๋ง๋ค์ด ์ ๋๋ฉ์ด์
ํด๋ฆฝ์ ์
ํ๊ฑฐ๋ ์ฐ๊ฒฐํ๋ฉด ๋๋๋ฐ

์ปจํธ๋กค๋ฌ์์ ์๋ฌด๊ฒ๋ ์๋ ๋ฐฐ๊ฒฝ์ ๋ง์ฐ์ค ์ฐํด๋ฆญ(๋งฅ ํธ๋ํจ๋๋ ๋์๊ฐ๋ฝ ํด๋ฆญ ํธ์์ ์์ผ๋ก ์ฐํด๋ฆญ์ผ๋ก ํต์ผ)ํด์ฃผ์ด Empty๋ฅผ ๋ง๋ค๋ฉด ๋น์ด์๋ ์ํ๊ฐ ๋ง๋ค์ด์ง๋ค.
๋๋ ํ๋ก์ ํธ์์ ์์ ํ์ผ์ ๋ฐ๋ก ํ๋ฉด์ ์ฌ๋ฆฌ๋ฉด ํด๋ฆฝ์ด ๋ค์ด๊ฐ ์๋ ์ํ๊ฐ ์์ฑ๋๋ค.

์ด๋ ๊ฒ ์ํ๋ค์ ๋
ธ๊ฐ๋ค๋ฅผ ํตํด ๋ค ๋ง๋ค์๋ค๋ฉด ์ด์ ์ด๋๊ฒฝ๋ก๋ฅผ ๋ง๋ค์ด ์ฃผ์ด์ผํ๋๋ฐ
์์ํ๊ณ ์ถ์ ์ํ์์ ๋ง์ฐ์ค ์ฐํด๋ฆญ์ ํตํด
Make Transition์ ํด๋ฆญํ๋ค ์ด๋ ๋ชฉ์ ์ง ์ํ์ ํด๋ฆญํด์ฃผ๋ฉด ํ๋ฉด๊ณผ ๊ฐ์ด ๊ธธ์ด ๋ง๋ค์ด ์ง๋ค.
Transition์ ํด๋ฆญํด ๋์ค๋ inspector์์ ์ค์ ํ ํ๋ผ๋ฏธํฐ ๊ฐ์ conditions์์ ์กฐ์ ํ์ฌ ์ด๋์กฐ๊ฑด์ ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค.
Has Exit Time์ด ์ฒดํฌ๋์ด์์ผ๋ฉด ์งํ์ค์ธ ์ ๋๋ฉ์ด์ ์ด ๋๋ ๋๊น์ง ์ํ๋ฅผ ๋ฐ๊พธ์ง ์๋๋ค.
์ ์์ ์ ๋ฐ๋ณตํด์ ๋ง๋ค์ด ์ฃผ๋ฉด

๊ทน๋จ์ ์ด๊ธด ํ์ง๋ง ์ด๋ฐ ๋ชจ์์ด ๋์ค๋๋ฐ ๊ทธ๋ฅ ๋ณด๊ธฐ๋งํด๋ ๋ณต์กํ๊ณ ๋นํจ์จ์ ์ธ๊ฒ์ด ๋๊ปด์ง๋๋ฐ ์ด๋ ์ ๋ชฉ์ ์๋ ๋ธ๋๋ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊น๋ํ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.
'์๋ค'๋ผ๋ Blend์ ๋ป์ฒ๋ผ ํ ์ํ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํด์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ๋ผ ์์ด ์ฌ์ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
๊ฐ Idle ๊ณผ Walk ์ ๋๋ฉ์ด์ ์ด ์ํ์ข์ฐ๋ก ๋๋์ด์ ธ ์์ผ๋ ์บ๋ฆญํฐ๊ฐ ํฅํ๋ x๊ฐy๊ฐ(3D์์ ๋ฌ๋ผ์ง ์ ์์)์ ๋ฐ์์ ๋ฐฉํฅ์ผ๋ก ์ ๋๋ฉ์ด์ ์ ์ ํ๊ฒ ํด์ฃผ๋ ค๊ณ ํ๋ค.

์ปจํธ๋กค๋ฌ ๋ฐฐ๊ฒฝ์์ Create State -> From New Blend Tree๋ก ์์ฑํด์ค๋ค.
๊ทธ ๋ค Blend Tree ์ธ์คํํฐ์ฐฝ์์ Motion์ ์๋ Blend Tree๋ก ๋ค์ด๊ฐ๋ค.
์ฌ์ฉํ ์ฉ๋์ ๋ฐ๋ผ Blend Type์ ์ ํํ ์ ์๋๋ฐ
์ด๋ผ๋ ํน์ง์ด ์์ง๋ง ์ฐ๋ฆฌ๋ ํ๋ผ๋ฏธํฐ 2๊ฐ๋ก ๋ฐฉํฅ๋ง ์ค์ ํ๋ 2D Simple Directional์ฌ์ฉํ๋ค.(๋ค๋ฅธ 2D๋ฅผ ์ค์ ํด๋ ๋์์ ๋๊ฐ์ด ์ํ๋ค)
4๊ฐ์ ๋ชจ์
์ด ์์ผ๋ Motion์์ +๋ฅผ 4๋ฒ ๋๋ฌ์ ์ถ๊ฐํด์ฃผ๊ณ
๊ฐ๊ฐ x,y๊ฐ์ ์ค์ ํ ๋ค ํด๋นํ๋ ์์น์ ์ ๋๋ฉ์ด์
์ ๋ฃ์ด์ค๋ค.

์ฌ๊ธฐ๊น์ง ํด์ฃผ์๋ค๋ฉด ์ด์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋
์์๋๋ก ์งํํ๋ฉด ๋๋ค.
์ด๋ฐ์์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ฐ์์ ์ฃผ๊ณ

์ด๋ฐ ์์ผ๋ก ์ ๋ฐ์ดํธ ํจ์์์ ์ธํ์ด ์์ผ๋ฉด ๋ง์ง๋ง ๋ฐฉํฅ์ ๊ฐ์ ธ์ ์ ์ฅํด์ค๋ค.
๋๊ฐ์ ๋ณด์ ์ ๊ตฌํํ ๋ ๊ฐ์ 1์ ํ์ผ๋ ๋์์ ๋๊ฐ๋ฅผ ๋๋ฌ ๋๊ฐ์ ์ ๋ง๋ค๋ฉด ๊ฐ์ด ๋ฃจํธ2๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ผ์ ํ ์๋์ ์ง๋ฅผ ์ํด์ ์ค์ ํด์ค๋ค.

๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ฐ์ดํธ ํจ์๋ด์์ ์ด๋ฐ์์ผ๋ก ์ ๋๋ฉ์ดํฐํํ ๊ฐ์ ์ ๋ฌํด์ฃผ๋ฉด ๋์ด๋ค.

๋ฌผ๋ก ์ ๋๋ฉ์ดํฐ ์ปจํธ๋กค๋ฌ์ ์์ ๋ง๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ฃ์ด์ค์ผํ๋ค.

using UnityEngine;
using UnityEngine.InputSystem;
public class chmove : MonoBehaviour
{
public float moveSpeed = 4f;
public InputAction moveAction;
Rigidbody2D rb;
Animator anim;
Vector2 input;
Vector2 lastDir = Vector2.down; // ์ ์ง ์ ๋ฐ๋ผ๋ณผ ๊ธฐ๋ณธ ๋ฐฉํฅ
void Awake()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
void OnEnable()
{
moveAction.Enable();
}
void OnDisable()
{
moveAction.Disable();
}
void Update()
{
// ์ Input System์์ Vector2 ์ฝ๊ธฐ
input = moveAction.ReadValue<Vector2>();
// ๋๊ฐ์ ๋ณด์
if (input.sqrMagnitude > 1f)
input.Normalize();
// ๋ง์ง๋ง ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ ์ ์ง(4๋ฐฉํฅ ๊ธฐ์ค)
Vector2 dir = lastDir;
if (input.sqrMagnitude > 0.0001f)
{
if (Mathf.Abs(input.x) > Mathf.Abs(input.y))
dir = new Vector2(Mathf.Sign(input.x), 0f);
else
dir = new Vector2(0f, Mathf.Sign(input.y));
lastDir = dir;
}
// ์ ๋๋ฉ์ดํฐ ํ๋ผ๋ฏธํฐ
anim.SetFloat("Movex", lastDir.x);
anim.SetFloat("Movey", lastDir.y);
anim.SetFloat("speed", input.sqrMagnitude);
}
void FixedUpdate()
{
rb.linearVelocity = input * moveSpeed;
}
}
๋!