Layer์ Tag ์ฌ์ฉ ๋ฐ ์ฐจ์ด
์ ๋ํฐ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ค๋ธ์ ํธ๋ ๊ฐ๊ฐ์ ์ด๋ฆ์ด ์กด์ฌํ๊ณ ๊ทธ ์ค๋ธ์ ํธ๋ค์ ๋ถ๋ฅํ๊ธฐ ์ํด Tag์ Layer๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ ์์๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๊ณ ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋์ง ์์๋ณด์.
๊ฒ์ ์ค๋ธ์ ํธ๋ฅผ ์ ํํ ํ ์ธ์คํํฐ ์ฐฝ์์ ์๋จ์ ๋ณด๋ฉด Tag์ Layer๋ฅผ ์ฐพ์ ์ ์๋ค.
ํด๋ฆญ ํ ๋งจ ์๋ Add Tag ๋๋ Add Layer๋ฅผ ๋ค์ ํด๋ฆญํ๋ฉด Tags & Layers ์ฐฝ์ผ๋ก ์ด๋๋๋ค.
Tags & Layers ์ฐฝ์์ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋๋ ๋ชจ๋ Tag์ Layer๋ค์ ๊ด๋ฆฌํ๋ค.
๊ธฐ๋ณธ์ผ๋ก ์ถ๊ฐ๋ Tag์ Layer ์ธ์๋ ์๋ก์ด ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ค.
1. Layer
Layer๋ ์ค๋ธ์ ํธ๋ค์ ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
- ๊ฒ์ ์ค๋ธ์ ํธ์ ๊ธฐ๋ณธ ๋ ์ด์ด๋ Dafalut๋ก ์ค์ ๋์ด ์๋ค.
- ์์ ์ค๋ธ์ ํธ์ ํ์ ์ค๋ธ์ ํธ๋ ์๋ก ๋ค๋ฅธ ๋ ์ด์ด๋ฅผ ๊ฐ์ง ์ ์๋ค.
- 0~7๊น์ง์ ๊ธฐ๋ณธ ๋ ์ด์ด ์ธ์ 8~31๊น์ง์ ์ปค์คํ ๋ ์ด์ด๋ฅผ ์ ๊ณตํ๋ค.
1) ์ ํ์ ๋ ๋๋ง
์ฌ ์นด๋ฉ๋ผ๋ก๋ถํฐ ํน์ ๋ ์ด์ด๋ง์ ๋ ๋๋ง ํ๋๋ก ํ ์ ์๋ค.
2) ๋ ์ด์ด ์ถฉ๋ ๋งคํธ๋ฆญ์ค (Layer Collision Matrix)
๋ ์ด์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ์ค๋ธ์ ํธ ๊ทธ๋ฃน ๊ฐ์ ์ถฉ๋์ ๊ด๋ฆฌํ ์ ์๋ค. ๋ ์ด์ด ์ถฉ๋ ๋งคํธ๋ฆญ์ค๋ ์๋ก ์ถฉ๋ํ ์ ์๋ ๋ ์ด์ด๋ฅผ ์ ์ํ๋ค. ๋์ผํ ๋ ์ด์ด๋ผ๋ฆฌ ์ถฉ๋์ ๊ฐ๋ฅํ๊ฒ ํ๊ฑฐ๋ ๋ค๋ฅธ ๋ ์ด์ด์์ ์ถฉ๋์ ๊ฐ์งํ์ง ์๋๋ก ์ค์ ํ ์ ์๋ค.
๊ฒ์ ์ค๋ธ์ ํธ๋ค ๊ฐ์ ๋ถํ์ํ ์ฐ์ฐ์ ํ์ง ์๋๋ก ํ๋ฉฐ ๋ฌผ๋ฆฌ ์ฐ์ฐ์ ๋๋ ์์ ๋ฐ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค.
Physics์ Physics 2D๋ ์๋ก ๋ฌผ๋ฆฌ ์ฐ์ฐ์ ํ์ง ์๋๋ค. Project settings์๋ Layer Collision Matrix๊ฐ Physics์ Physics 2D ๋ ๊ฐ ์กด์ฌํ๋ค. ๊ฐ๊ฐ์ Layers ์ค์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์ด ์ถฉ๋ ๋งคํธ๋ฆญ์ค๊ฐ ์ค์ ๋์ด ์์ง๋ง, Physics์์ ์์ ๋ ์ฌํญ์ Physcis 2D ์ค์ ์ ๋ฐ์๋์ง ์๋๋ค. ๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ๋ ์ด์ด ์ถฉ๋ ๋งคํธ๋ฆญ์ค์ด๋ค.
3) ๋ ์ด ์บ์คํ ์ถฉ๋ (Raycasting Collision)
๋ ์ด ์บ์คํ ์ ๋ฌผ๋ฆฌ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ๋น์ ์์ ๋ชจ๋ ์ค๋ธ์ ํธ์ ๋ํด ์ถฉ๋์ ํ๋จํ๋ค. ๊ทธ๋์ ํน์ ๊ฒ์ ์ค๋ธ์ ํธ๊ฐ ์กด์ฌํ๋์ง ํ๋จํ๋ ๊ฒ์ ๋นํจ์จ์ ์ธ ๋ฐฉ์์ด ๋ ์ ์๋ค.
์ด๋ Layer Mask๋ฅผ ์ค์ ํ๋ฉด ํน์ ๋ ์ด์ด์์ ์ถฉ๋์ ํ์ ํ ์ ์๋ค. ์ฌ์ง์ด ๋จ์ผ ๋ ์ด์ด๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ ๊ฐ์ ๋ ์ด์ด๋ ๋ชจ๋ ๋ ์ด์ด๋ฅผ ์ ํํ์ฌ ๊ด๋ฆฌํ ์ ์๋ค.
4) Sorting Layer
์ ๋ ฌ ๋ ์ด์ด๋ ๊ฒ์ ์ค๋ธ์ ํธ ๋ด์์ ๋ ๋๋ง ์์๋ฅผ ์ ์ํ๋ค.
์ฃผ๋ก 2D ์์คํ ์์ ์คํ๋ผ์ดํธ๋ฅผ ์ ๋ ฌํ๋๋ฐ ์์ฃผ ์ ์ฉํ๋ค. 8๊ฐ์ ์คํ๋ผ์ดํธ๋ก ๊ตฌ์ฑ๋ ์บ๋ฆญํฐ๋ฅผ ๋ง๋ค ๋ 8๊ฐ์ ์คํ๋ผ์ดํธ๋ฅผ ํ๋์ ์ ๋ ฌ ๋ ์ด์ด๋ก ์ค์ ํ๊ณ ์ดํ ์ ๋ ฌ ๋ ์ด์ด ์์์ ์ถ๊ฐ์ ์ผ๋ก ์ ๋ ฌ ์์๋ฅผ ์ ํ์ฌ ์บ๋ฆญํฐ๋ฅผ ๊ตฌํํ ์ ์๋ค.
2. Tag
Tag๋ ๊ฐ ๊ฒ์ ์ค๋ธ์ ํธ๋ฅผ ์๋ณํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
๋ํ์ ์ธ ์ฌ์ฉ ์์๋ก ์ถฉ๋์ ๊ฒ์ฌํ๋ OnCollision ํน์ OnTrigger ๊ณ์ด์ ํจ์์์ ๋์ ๊ฒ์ ์ค๋ธ์ ํธ์ ์ถฉ๋ํ ๊ฒ์ ์ค๋ธ์ ํธ์ ์ข ๋ฅ๊ฐ ๋ฌด์์ธ์ง์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.transform.CompareTag("PlayerAttack"))
{
OnDamage(collision.transform);
}
}
์ถ๊ฐ๋ก ํ๊ทธ๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์์ CompareTag ํจ์ ์ธ์๋ ์ฌ๋ฌ ๋ฐฉ์์ด ์๋ค. ๊ทธ๋ฌ๋ ์๋ ๋ฐฉ์์ผ๋ก ํ๊ทธ๋ฅผ ๋น๊ตํ๋ฉด ๋น์ฅ์ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง, ๊ฒ์์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ๋ฌธ์ ๊ฐ ๋๋ฌ๋๊ฒ ๋๋ค. ์๋ ๋ฐฉ์์ ๋ฌธ์์ด ๋น๊ต ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ํด๋น ๋ฌธ์์ด์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋ฌธ์์ด์ ๋ณต์ฌ๋ณธ์ ์์ฑํ๊ฒ ๋๊ณ ์ ๋ํฐ์ ์์คํ ์ ๋ณต์ฌ๋ณธ์ ์์ฑํ ๋ GC๊ฐ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
if (collision.tag == "PlayerAttack"){ ... }
if (collision.tag.Equals("PlayerAttack")){ ... }
3. Layer์ Tag์ ์ฐจ์ด์
- ๋ ์ด์ด๊ฐ ๊ทธ๋ฃน ๊ด๋ฆฌ๋ผ๋ฉด ํ๊ทธ๋ ๋จ์ผ ๊ฒ์ ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ค.
- ํ๊ทธ๋ ๋ ์ด์ด๋ณด๋ค ๋ ์ข์ ๋ฒ์์์ ์ค๋ธ์ ํธ๋ฅผ ํ์ธํ๋ค.