
์ค๋๋ง์ Unity ๊ฐ๋ฐ์ ๋ค์ ์์ํ๋ฉด์, ์์ ์ ๋ง๋ค๋ โ์ปดํจํฐ ๋ฐ์ด๋ฌ์ค ์์กด / ์๋ฒ ๋ณดํธโ ๊ฒ์์ Unity6 ๊ธฐ์ค์ผ๋ก ์ฒ์๋ถํฐ ๋ค์ ์ ์ํ๊ณ ์๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ค์ ๋ถํฐ 3๊ฐ์ ์คํ ์ด์ง ํ์ผ๋งต ๊ตฌ์ฑ, ํ๋ ์ด์ด ์ด๋ ์ค์ , ๊ทธ๋ฆฌ๊ณ ํ์ผ๋งต์์ ํ๋ ์ด์ด๊ฐ ๊ฐ๋ ค์ง๋ ๋ฌธ์ ํด๊ฒฐ๊น์ง ์ ๋ฆฌํด๋ณธ๋ค.
Unity6์์ ์ Input System์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ธฐ์กด ๋ฐฉ์(Input.GetAxisRaw)์ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
InvalidOperationException:
You are trying to read Input using the UnityEngine.Input class,
but you have switched active Input handling to Input System package
์ฆ, Input System์ผ๋ก ์ ํํ์ผ๋ฉด Player Input ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฅ์ ๋ฐ์์ผ ํ๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ ์์ฝ
- PlayerInput ์ปดํฌ๋ํธ ์ถ๊ฐ
- Input Actions์์ Move ์ก์ ์์ฑ
- C# PlayerMovement ์คํฌ๋ฆฝํธ์์ OnMove(InputValue value) ํํ๋ก ๊ฐ ๋ฐ์์ค๊ธฐ
- Update ๋์ ์ ๋ ฅ ์ฝ๋ฐฑ์ผ๋ก ์ด๋ ์ ์ฉ
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5f;
private Rigidbody2D rb;
private Vector2 moveInput;
private Animator animator;
private SpriteRenderer sprite;
private void Awake()
{
rb = GetComponent<Rigidbody2D>();
animator = GetComponent<Animator>();
sprite = GetComponent<SpriteRenderer>();
}
public void OnMove(InputValue value)
{
moveInput = value.Get<Vector2>();
}
private void FixedUpdate()
{
rb.linearVelocity = moveInput * speed;
// ์ ๋๋ฉ์ด์
์ ํ
float currentSpeed = moveInput.magnitude;
animator.SetFloat("Speed", currentSpeed);
// ์ข์ฐ ๋ฐ์ (FlipX)
if (moveInput.x != 0)
{
sprite.flipX = moveInput.x > 0;
}
}
}
์ด ๊ฒ์์ ์ค์์ ์๋ฒ๋ฅผ ํ์๋ํ์คํ๋ ๊ฒ์์ด๋ค.
โ 1) Tilemap ์์ฑ
Hierarchy โ Create โ 2D โ Tilemap โ Rectangular
โ 2) Tile Palette ์์ฑ
Window โ 2D โ Tile Palette
โ 3) png ํ์ผ๋ก ํ์ผ ์์ฑ
Tile Palette์ png ํ์ผ ๋ฃ๊ธฐ โ asset ํ์ผ ์์ฑ
โ 4) ํ์ผ๋งต ์์น ํ๊ธฐ
Tile Palette์์ Box Fill ๋๊ตฌ๋ก ์ก๊ณ ๋๋๊ทธํ๋ฉด ์ฌ๊ฐํ ์์ญ ํ ๋ฒ์ ์์น ๊ฐ๋ฅ.
ํ์ผ๋งต ์ฌ์ด์ ๋น ๊ณต๊ฐ์ด ์๊ธฐ๋ ๋ฌธ์ ํด๊ฒฐ ํ์ผ๋งต์ ์น ํ๋๋ฐ ํ์ผ ์ฌ์ด์ 1px ์ ๋์ ๋นํ์ด ์๊ธด๋ค๋ฉด ๋ค์์ด ์์ธ์ผ ํ๋ฅ ์ด ๋งค์ฐ ๋๋ค.
โ ํด๊ฒฐ ์ฒดํฌ๋ฆฌ์คํธ
์คํ๋ผ์ดํธ Filter Mode - Point(no filter)
Pixel Per Unit - ํ์ผ ํฌ๊ธฐ์ ๋์ผํ๊ฒ ์ค์
Tilemap์ด SpriteRenderer๋ณด๋ค ์์ ์์ผ๋ฉด ํ๋ ์ด์ด๊ฐ ๋ค๋ก ์จ์ด๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
โ Sorting Layer ์ถ๊ฐ
Edit โ Project Settings โ Tags and Layers
๋ค์๊ณผ ๊ฐ์ Sorting Layer ์์ฑ
Background
Tilemap
Player
๊ฐ๊ฐ ์ ์ฉ
Tilemap Renderer โ Sorting Layer : Tilemap
Player SpriteRenderer โ Sorting Layer : Player
๋๋ Order in Layer ๊ฐ์ผ๋ก๋ ์กฐ์ ๊ฐ๋ฅ.
Scene
โโโ Grid
โ โโโ Tilemap
โ
โ
โ
โโโ Player
ํ๋ ์ด์ด๋ ํ์ฌ ๊ธฐ๋ณธ ์ด๋ ๋ฐ ๋งต๋ง ๊ตฌ์ฑํ ์ํ๋ก ์์ผ๋ก๋ ๋งต ์ ํ(์นด๋ฉ๋ผ ์ด๋), ๋ชฌ์คํฐ(๋ฐ์ด๋ฌ์ค) ์คํฐ, ์๋ฒ ์ค๋ธ์ ํธ ๊ตฌํ์ ์งํํ ์์ .
๐ ํ๋์ Unity๋ฅผ ๋ ๋ฌ๋ค๊ฐ ๋์์์ง๋ง, AI๋ฅผ ํตํ ๋ฐ์ด๋ธ ์ฝ๋ฉ์ผ๋ก ์ด๋ ๊ฒ ํ๋์ฉ ์ ๋ฆฌํ๋ฉฐ ๋ค์ ์์ํ๋ ๊ฐ์ด ๋์์ค๋ ์ค์ด๋ค.