[Unity] Layer์™€ Tag ์‚ฌ์šฉ ๋ฐ ์ฐจ์ด

2022. 5. 28. 17:14ยท๐Ÿ“ Game/โœ Unity

Layer์™€ Tag ์‚ฌ์šฉ ๋ฐ ์ฐจ์ด

์œ ๋‹ˆํ‹ฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋Š” ๊ฐ๊ฐ์˜ ์ด๋ฆ„์ด ์กด์žฌํ•˜๊ณ  ๊ทธ ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•ด Tag์™€ Layer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‘  ์š”์†Œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์„ ํƒํ•œ ํ›„ ์ธ์ŠคํŽ™ํ„ฐ ์ฐฝ์—์„œ ์ƒ๋‹จ์„ ๋ณด๋ฉด Tag์™€ Layer๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

Tag์™€ Layer

 

ํด๋ฆญ ํ›„ ๋งจ ์•„๋ž˜ Add Tag ๋˜๋Š” Add Layer๋ฅผ ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด Tags & Layers ์ฐฝ์œผ๋กœ ์ด๋™๋œ๋‹ค.

 

Add ...

 

Tags & Layers ์ฐฝ์—์„  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  Tag์™€ Layer๋“ค์„ ๊ด€๋ฆฌํ•œ๋‹ค.

๊ธฐ๋ณธ์œผ๋กœ ์ถ”๊ฐ€๋œ Tag์™€ Layer ์™ธ์—๋„ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Tags & Layers

 

1. Layer

Layer๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์˜ ๊ธฐ๋ณธ ๋ ˆ์ด์–ด๋Š” Dafalut๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.
  • ์ƒ์œ„ ์˜ค๋ธŒ์ ํŠธ์™€ ํ•˜์œ„ ์˜ค๋ธŒ์ ํŠธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ ˆ์ด์–ด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • 0~7๊นŒ์ง€์˜ ๊ธฐ๋ณธ ๋ ˆ์ด์–ด ์™ธ์— 8~31๊นŒ์ง€์˜ ์ปค์Šคํ…€ ๋ ˆ์ด์–ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

1) ์„ ํƒ์  ๋ Œ๋”๋ง

์”ฌ ์นด๋ฉ”๋ผ๋กœ๋ถ€ํ„ฐ ํŠน์ • ๋ ˆ์ด์–ด๋งŒ์„ ๋ Œ๋”๋ง ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Culling Mask

 

2) ๋ ˆ์ด์–ด ์ถฉ๋Œ ๋งคํŠธ๋ฆญ์Šค (Layer Collision Matrix)

๋ ˆ์ด์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ์˜ค๋ธŒ์ ํŠธ ๊ทธ๋ฃน ๊ฐ„์˜ ์ถฉ๋Œ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ ˆ์ด์–ด ์ถฉ๋Œ ๋งคํŠธ๋ฆญ์Šค๋Š” ์„œ๋กœ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์–ด๋ฅผ ์ •์˜ํ•œ๋‹ค. ๋™์ผํ•œ ๋ ˆ์ด์–ด๋ผ๋ฆฌ ์ถฉ๋Œ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ ˆ์ด์–ด์™€์˜ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

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๊ฐœ์˜ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ํ•˜๋‚˜์˜ ์ •๋ ฌ ๋ ˆ์ด์–ด๋กœ ์„ค์ •ํ•˜๊ณ  ์ดํ›„ ์ •๋ ฌ ๋ ˆ์ด์–ด ์•ˆ์—์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์ •ํ•˜์—ฌ ์บ๋ฆญํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Sorting Layer

 

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์˜ ์ฐจ์ด์ 

  • ๋ ˆ์ด์–ด๊ฐ€ ๊ทธ๋ฃน ๊ด€๋ฆฌ๋ผ๋ฉด ํƒœ๊ทธ๋Š” ๋‹จ์ผ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ํƒœ๊ทธ๋Š” ๋ ˆ์ด์–ด๋ณด๋‹ค ๋” ์ข์€ ๋ฒ”์œ„์—์„œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ™•์ธํ•œ๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Game/โœ Unity' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Unity] ์—์…‹ ๋Ÿฐํƒ€์ž„ ๋กœ๋“œ(๋ฆฌ์†Œ์Šค ํด๋”, ์—์…‹ ๋ฒˆ๋“ค, ์–ด๋“œ๋ ˆ์„œ๋ธ” ์—์…‹)
  • [Unity] ์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์˜ค๋ธŒ์ ํŠธ(Scriptable Object)
  • [Unity] Inspector Attribute
  • [Unity] ์ƒ๋ช… ์ฃผ๊ธฐ(Life Cycle)
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[Unity] Layer์™€ Tag ์‚ฌ์šฉ ๋ฐ ์ฐจ์ด
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”