์ง€๋‚œ ์‹œ๊ฐ„ ๊ตฌํ˜„ํ•œ ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๋Š” ๋ฐœํŒ๊ณผ ๋ฒฝ์„ ๋ฌด์‹œํ•˜๊ณ  ํ†ต๊ณผํ•œ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๋ฌผ๋ฆฌ ๊ด€๋ จ ๋…ธ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์บ๋ฆญํ„ฐ์™€ ๋ฐœํŒ ์‚ฌ์ด์˜ ์ถฉ๋Œ์„ ๊ตฌํ˜„ํ•ด๋ณด์ž.

ย 

stage_1์”ฌ์— CharacterBody2D๋ผ๋Š” ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์ž. Sprite2D๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์™€ ๋ฐฉ๋ฒ•์€ ๊ฐ™๋‹ค. CharacterBody2D๋ฅผ ์ƒ์„ฑํ–ˆ์œผ๋ฉด ์”ฌ ๋…์—์„œ Player๋…ธ๋“œ๋ฅผ CharacterBody2D๋…ธ๋“œ์— ๋“œ๋ž˜๊ทธ ํ•˜์ž.

ย 

๊ทธ๋Ÿฌ๋ฉด Player๋…ธ๋“œ๊ฐ€ CharacterBody2D์˜ ํ•˜์œ„๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ํ•˜์œ„๋กœ ๋“ค์–ด๊ฐ„ ๋…ธ๋“œ๋ฅผ [์ž์‹ ๋…ธ๋“œ](Child Node)๋ผ๊ณ  ์นญํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ [์ž์‹ ๋…ธ๋“œ]๋ฅผ ๊ฐ€์ง„ ์ƒ์œ„ ๋…ธ๋“œ๋Š” [๋ถ€๋ชจ ๋…ธ๋“œ](Parent Node)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ฆ‰ Player๋…ธ๋“œ๋Š” CharacterBody2D๋…ธ๋“œ์˜ [์ž์‹ ๋…ธ๋“œ]์ด๋ฉฐ ๋ฐ˜๋Œ€๋กœ CharacterBody2D๋…ธ๋“œ๋Š” Player๋…ธ๋“œ์— ๋Œ€ํ•˜์—ฌ [๋ถ€๋ชจ ๋…ธ๋“œ]๋ผ๋Š” ๊ด€๊ณ„์ธ ๊ฒƒ์ด๋‹ค.

ย 

์ž์‹ ๋…ธ๋“œ์ธ Player๋…ธ๋“œ์˜ ์ด๋ฆ„์„ โ€˜Spriteโ€™๋กœ, ๋ถ€๋ชจ ๋…ธ๋“œ์ธ CharacterBody2D๋…ธ๋“œ์˜ ์ด๋ฆ„์„ โ€˜Playerโ€™๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์ž. ์ด์ œ Sprite๋…ธ๋“œ(์›๋ž˜ ์ด๋ฆ„์ด Player์˜€๋˜ ๋…ธ๋“œ)๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์— ๋ถ™์–ด์„œ ๊ทธ๋ž˜ํ”ฝ์„ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ๋งŒ ํ•  ๊ฒƒ์ด๊ณ  ์‹ค์ œ ์ด๋™ํ•˜๋Š” ์—ญํ• ์€ ๊ทธ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Player๋ผ๋Š” ์ด๋ฆ„์€ ๋ถ€๋ชจ์ธ CharacterBody2D๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ๋ฐ”๋€ ์ด๋ฆ„๋Œ€๋กœ ๋ถ€๋ชจ ์ชฝ์„ Player๋…ธ๋“œ, ์ž์‹ ์ชฝ์„ Sprite๋…ธ๋“œ๋ผ๊ณ  ๋ถ€๋ฅผ ๊ฒƒ์ด๋‹ˆ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์œ ์˜ํ•˜์ž.

ย 

Sprite๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ธ์ŠคํŽ™ํ„ฐ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์—ฌ๋Ÿฌ ์†์„ฑ ์ค‘์—์„œ Transform์ด๋ผ๋Š” ๊ทธ๋ฃน์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ํด๋ฆญํ•ด์„œ ํŽผ์ณ๋ณด์ž.

ย 

Transform์ด๋ž€ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด 2D๋…ธ๋“œ(Sprite2Dํƒ€์ž…์ด ์•„๋‹ˆ๋”๋ผ๋„ ๋ชจ๋“  2D๊ด€๋ จ ๋…ธ๋“œ๋Š” ์ด Transform์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.)์˜ ๊ณต๊ฐ„์  ์ •๋ณด(์œ„์น˜, ๊ฐ๋„, ํฌ๊ธฐ)์ด๋‹ค. ๊ฐ ์†์„ฑ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

-ย ย ย ย ย  position : ์œ„์น˜

-ย ย ย ย ย  rotation : ๊ฐ๋„

-ย ย ย ย ย  scale : ํฌ๊ธฐ

-ย ย ย ย ย  skew : ๊ธฐ์šธ์ž„ (์ด๊ฑด ๊ฑฐ์˜ ์“ธ ์ผ ์—†๋‹ค.)

์šฐ๋ฆฌ๊ฐ€ 2D์Šคํฌ๋ฆฐ์—์„œ Sprite2D๋…ธ๋“œ๋ฅผ ์ด๋™ํ•˜๊ณ , ํšŒ์ „์‹œํ‚ค๊ณ , ๋Š˜๋ ธ๋‹ค ์ค„์˜€๋‹ค ํ•˜๋Š” ๋ชจ๋“  ์กฐ์ž‘์€ ์‚ฌ์‹ค ์ด ์†์„ฑ๋“ค์„ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด Transform์œผ๋กœ ๋ฌถ์ด๋Š” ์†์„ฑ์˜ ๊ฐ’๋“ค์€ ๋ชจ๋‘ [๋ถ€๋ชจ ๋…ธ๋“œ]๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด position์€ [๋ถ€๋ชจ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ์˜ ์ƒ๋Œ€์ ์ธ ์œ„์น˜]๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์šฐ๋ฆฌ๋Š” Sprite๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ ๋…ธ๋“œ์ธ Player๋…ธ๋“œ์˜ ๊ณต๊ฐ„์  ์ •๋ณด์™€ ์ผ์น˜ํ•˜๋„๋ก ๊ทธ๋ž˜ํ”ฝ์„ ํ‘œ์‹œํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Transform์— ํ•ด๋‹นํ•˜๋Š” ์†์„ฑ๋“ค์„ ์Šคํฌ๋ฆฐ์ƒท๊ณผ ๊ฐ™์ด ์ „๋ถ€ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋„๋ก ํ•˜์ž.

ย 

๋‹ค์Œ์€ Sprite๋…ธ๋“œ์— ๋ถ™์–ด์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ Player๋…ธ๋“œ์— ๋ถ€์ฐฉํ•˜์ž.

ย 

์ด์ œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ฐจ๋ก€๋‹ค. ์ง€๋‚œ๋ฒˆ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ player.gd์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ด์ž.

ย 

์šฐ์„  ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๋ผ์ธ์„ ์ˆ˜์ •ํ•˜์ž. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ์ด์ œ Sprite2D๊ฐ€ ์•„๋‹Œ CharacterBody2Dํƒ€์ž…์˜ ๋…ธ๋“œ(Player๋…ธ๋“œ)์— ๋ถ€์ฐฉ๋˜๋ฏ€๋กœ ํ•ด๋‹น ํƒ€์ž…์„ ์ƒ์†๋ฐ›์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ โ€˜extends Sprite2Dโ€™๋ฅผ โ€˜extends CharacterBody2Dโ€™๋กœ ์ˆ˜์ •ํ•˜์ž.

ย 

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐ‘์— โ€˜var speed:float = 500.0โ€™์ด๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ž. ์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ถ€์ฐฉ๋œ ๋…ธ๋“œ์— speed๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ [๋ณ€์ˆ˜]๋ฅผ ๋งŒ๋“ค๊ณ  ๋…ธ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ํ•ด๋‹น [๋ณ€์ˆ˜] ์ดˆ๊ธฐ๊ฐ’์ด 500.0์œผ๋กœ ์„ค์ •๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. [๋ณ€์ˆ˜](variable, ์ค„์—ฌ์„œ var)๋ž€ ๋Œ€์ถฉ ๊ฐ’์„ ๋‹ด์•„๋‘๋Š” ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

ย 

๋‹ค์Œ์œผ๋กœ _process๋ฉ”์„œ๋“œ์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•ด์ฃผ์ž. ์ง€๋‚œ ๊ฐ•์˜์—์„œ ๋งํ–ˆ๋“ฏ์ด ์ฃผ์„์€ ์ƒ๋žตํ•ด๋„ ๋˜๋ฉฐ ์ฝ”๋“œ์˜ ์˜๋ฏธ๊ฐ€ ๊ถ๊ธˆํ•˜๋ฉด ์ฝ์–ด๋ณด์ž.

ย 

๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ, _physics_process์™€ ๊ทธ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด์ฃผ์ž.

ย 

_physics_process๋Š” _process๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ _process์™€๋Š” ๋‹ฌ๋ฆฌ โ€˜๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹คโ€™๊ฐ€ ์•„๋‹ˆ๋ผ โ€˜์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹คโ€™(๊ธฐ๋ณธ ์„ค์ •์€ 1/60์ดˆ) ์ž‘๋™ํ•œ๋‹ค(์—„๋ฐ€ํ•œ ์„ค๋ช…์€ ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•ด๋‘์ž.). ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์ž„์˜ fps๊ฐ€ 60์ผ๋•Œ๋Š” _process์™€ _physics_process ๋‘˜ ๋‹ค ์ดˆ๋‹น 60๋ฒˆ์”ฉ ์ž‘๋™ํ•˜๊ฒ ์ง€๋งŒ fps๊ฐ€ 10์œผ๋กœ ๋–จ์–ด์ง€๋ฉด _process๋Š” ์ดˆ๋‹น 10๋ฒˆ์”ฉ๋งŒ ์ž‘๋™ํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ _physics_process๋ฉ”์„œ๋“œ๋Š” ์—ฌ์ „ํžˆ ์ดˆ๋‹น 60๋ฒˆ์”ฉ ์ž‘๋™ํ•œ๋‹ค.

ย 

๋ฌผ๋ฆฌ ์—ฐ์‚ฐ์€ ์‹คํ–‰ ์ฃผ๊ธฐ๊ฐ€ ์•ˆ์ •์„ฑ์— ํฐ ์˜ํ–ฅ์„ ๋ผ์น˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ์ฃผ๊ธฐ๊ฐ€ ์ผ์ •ํ•œ _physics_process๋ฉ”์„œ๋“œ์—์„œ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

ย 

๊ฒŒ์ž„์„ ์‹คํ–‰์‹œํ‚ค๊ณ  ์ขŒ์šฐ ๋ฐฉํ–ฅํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์ž. ์ด๋ฒˆ์— ์ฝ”๋”ฉํ•œ ๊ฒƒ์€ ๋ณ„๊ฑด ์•„๋‹ˆ๊ณ  ๊ธฐ์กด์˜ ์ด๋™ ์ฝ”๋“œ๋ฅผ CharacterBody2D์˜ ๊ธฐ๋Šฅ(์ถฉ๋Œ์„ ๊ฐ์ง€ํ•˜๋Š” ์ด๋™)์„ ํ™œ์šฉํ•ด์„œ ์ด๋™ํ•˜๋„๋ก ๊ฐœ์„ ํ•œ ๊ฒƒ๋ฟ์ด๋‹ค. (์บ๋ฆญํ„ฐ๊ฐ€ ์ด์ „๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๊ฒƒ์€ ๊ทธ๋ƒฅ ์†๋ ฅ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ 100.0์—์„œ 500.0์œผ๋กœ ๋†’์—ฌ์„œ ๊ทธ๋Ÿฐ ๊ฒƒ์ผ ๋ฟ์ด๋‹ค.)

ย 

์ด์ œ CharacterBody2D๊ฐ€ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ถฉ๋Œ ์˜์—ญ์„ ์„ค์ •ํ•ด์ฃผ์ž. CollisionShape2D๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ Player๋…ธ๋“œ์˜ ์ž์‹์œผ๋กœ ๋„ฃ์–ด์ฃผ์ž. ์ด CollisionShape2D๋ผ๋Š” ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๋ฌผ๋ฆฌ ๊ด€๋ จ ๋…ธ๋“œ์ผ ๋•Œ, ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ์ถฉ๋Œ ์˜์—ญ์˜ ๋ชจ์–‘์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

ย 

์”ฌ ๋…์—์„œ CollisionShape2D๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ธ์ŠคํŽ™ํ„ฐ๋ฅผ ๋ณด๋ฉด shape๋ผ๋Š” ์†์„ฑ์ด ์žˆ๋‹ค. ํ•ด๋‹น ์†์„ฑ์˜ <empty>๋ผ๊ณ  ํ‘œ์‹œ๋˜๋Š” ๋นˆ์นธ์„ ํด๋ฆญํ•˜๋ฉด ์›, ์‚ฌ๊ฐํ˜•, ์บก์А ๋“ฑ์˜ ๋ชจ์–‘ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘์—์„œ ์บก์А ๋ชจ์–‘(New CapsuleShape2D)๋ฅผ ์„ ํƒํ•˜์ž.

ย 

์„ ํƒํ•œ ๋ชจ์–‘์ด 2D ์Šคํฌ๋ฆฐ์— ๋‚˜ํƒ€๋‚œ๋‹ค. ์ถฉ๋Œ ์˜์—ญ์˜ ๋ชจ์–‘์„ ์ ๋‹นํžˆ ์„ค์ •ํ•ด์ฃผ๋˜, Sprite๋…ธ๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Transform ์†์„ฑ๋“ค์€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์ž.

ย 

์ด๋ฒˆ์—๋Š” ๋ฐœํŒ, ๋ฒฝ์—๋„ ๋ฌผ๋ฆฌ ๋…ธ๋“œ๋ฅผ ์ ์šฉํ•ด๋ณด์ž.

ย 

StaticBody2D๋ผ๋Š” ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐœํŒ ๊ทธ๋ž˜ํ”ฝ์„ ํ‘œ์‹œํ•˜๋Š” ๋…ธ๋“œ์— ์ž์‹์œผ๋กœ ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  CollisionShape2D๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ StaticBody2D๋…ธ๋“œ์˜ ์ž์‹์œผ๋กœ ๋„ฃ์ž. (StaticBody2D๋Š” CharacterBody2D์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฌผ๋ฆฌ ๊ด€๋ จ ๋…ธ๋“œ์ด์ง€๋งŒ CharacterBody2D์™€๋Š” ๋‹ฌ๋ฆฌ ์ด๋™๊ด€๋ จ ๊ธฐ๋Šฅ์ด ์—†์–ด ์›€์ง์ด์ง€ ์•Š๋Š” ๋ฐœํŒ, ์ง€ํ˜• ๋“ฑ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜๋‹ค.)

ย 

์ƒ์„ฑํ•œ StaticBody2D์™€ CollisionShape2D๋…ธ๋“œ ๋‘˜ ๋‹ค Transform์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์ž.

ย 

๊ทธ๋ฆฌ๊ณ  CollisionShape2D์˜ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ ์ด๋ฒˆ์—๋Š” ์‚ฌ๊ฐํ˜•(RectangleShape2D)๋ฅผ ์„ ํƒํ•˜์ž.

ย 

์ด์ œ ๋ฐœํŒ ๋˜๋Š” ๋ฒฝ ๊ทธ๋ž˜ํ”ฝ์— ์•Œ๋งž๊ฒŒ ์ถฉ๋Œ ์˜์—ญ์˜ ๋ชจ์–‘์„ ์„ค์ •ํ•ด์ฃผ์ž.

ย 

์ด ๊ณผ์ •์„ ๋ชจ๋“  ๋ฐœํŒ๊ณผ ๋ฒฝ์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ย 

๋ฐœํŒ๊ณผ ๋ฒฝ์˜ ์ถฉ๋Œ์˜์—ญ ์„ค์ •์ด ๋๋‚ฌ๋‹ค๋ฉด ์—๋””ํ„ฐ ์ขŒ์ƒ๋‹จ์˜ Project๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ์„ค์ •(Project Settingsโ€ฆ)์— ์ง„์ž…ํ•˜์ž.

ย 

Layer Names โ€“ 2D Physics ์„ค์ •์—์„œ Layer 1์€ โ€œGroundโ€, Layer2๋Š” โ€œPlayerโ€, Layer3์€ โ€œEnemyโ€๋กœ ์„ค์ •ํ•ด์ฃผ์ž.

ย 

ํ”„๋กœ์ ํŠธ ์„ค์ • ์ฐฝ์„ ๋‹ซ๊ณ  Player๋…ธ๋“œ์˜ ์ธ์ŠคํŽ™ํ„ฐ์—์„œ Collision์ด๋ผ๋Š” ๊ทธ๋ฃน์„ ํŽผ์ณ๋ณด์ž. ๊ทธ ์•ˆ์—๋Š” layer์™€ mask๋ผ๋Š” ์†์„ฑ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

-ย ย ย ย ย  Layer : ์ด ๋ฌผ๋ฆฌ ๋…ธ๋“œ๊ฐ€ ์–ด๋–ค ๋ ˆ์ด์–ด์— ํ•ด๋‹นํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

-ย ย ย ย ย  Mask : ์ด ๋ฌผ๋ฆฌ ๋…ธ๋“œ๊ฐ€ ์–ด๋–ค ๋ ˆ์ด์–ด๋ฅผ ๊ฐ์ง€ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋ฐฉ๊ธˆ ์ „ ํ”„๋กœ์ ํŠธ ์„ค์ •์—์„œ ์šฐ๋ฆฌ๋Š” 1๋ฒˆ ๋ ˆ์ด์–ด์— Ground(๋ฐœํŒ, ๋ฒฝ ๊ฐ™์€ ๋งต ์ง€ํ˜• ์š”์†Œ๋ฅผ ์˜๋ฏธ), 2๋ฒˆ ๋ ˆ์ด์–ด์— Player๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ๊ฐ ์ง€์–ด์คฌ๋‹ค. ์ด๋ฅผ ๋”ฐ๋ผ์„œ layer๋Š” 2๋ฒˆ ๋ ˆ์ด์–ด๋กœ, mask๋Š” 1๋ฒˆ ๋ ˆ์ด์–ด๋กœ ์„ค์ •ํ•ด์ฃผ์ž.

ย 

Player๋…ธ๋“œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐœํŒ๊ณผ ๋ฒฝ์— ํ•ด๋‹นํ•˜๋Š” StaticBody2D๋…ธ๋“œ๋“ค๋„ layer์™€ mask๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ layer์˜ ๊ธฐ๋ณธ๊ฐ’์ด 1๋ฒˆ ์ฆ‰ Ground๋ ˆ์ด์–ด์ด๋ฏ€๋กœ ์ด๋ฏธ ์•Œ๋งž๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

ย 

๊ฒŒ์ž„์„ ์‹คํ–‰์‹œ์ผœ๋ณด์ž. ๋” ์ด์ƒ ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๊ฐ€ ๋ฐœํŒ๊ณผ ๋ฒฝ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ถฉ๋Œํ•˜๋ฉด ์„ฑ๊ณต์ด๋‹ค.