๋ง์นจ ์ด์ ๋ถํฐ ๋ง๋ค๊ณ ์๋ ๊ฒ์ ์ฝ๋์๋ ๋น์ทํ ๊ฒ ์์ด์ ์ด๊ฑธ ์์๋ก ์ฌ๋ฆผ
์ ๋ฟ๋ง ์๋๋ผ ๋ญ ์์, ํ๋ ์ด์ด, ๊ธฐํ๋ฑ๋ฑ์ ๋๋ฏธ์ง ์ฒ๋ฆฌ๋ ์ผ๊ด์ ์ผ๋ก ํ๊ณ ์ถ๋ค๋ฉด ์ ์ ๋ถ๋ชจ๊ฐ ์๋๋ผ ์ธํฐํ์ด์ค๋ก ๋นผ์ ๋ ๋๊ฒ ๋ค์
์๋๋ฉด... ๊ตณ์ด EnemyBase์๋ค๊ฐ ๋๋ฏธ์ง ๊ตฌํ์ ๋งก๊ธฐ๊ณ ์ถ์ง ์๋ค๊ณ ํ๋ฉด HealthControl ์ด๋ฐ๊ฑธ ๋ฐ๋ก ๋ง๋ค์ด์ ๊ทธ๊ฒ๋ง ๋ฐ์์ค์ธ์
์ ๋ค์ ๋ถ๋ชจ๊ฐ ๋ ํด๋์ค
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฑธ ์์๋ฐ๋ ์
EnemyBase.cs์ RecieveDamage
๋ชจ๋ ์ ๋ค์ ReceieveDamage๊ฐ ๋๊ฐ์ ๋ก์ง์ผ๋ก ์๋ํ ๊ฑฐ๋ผ๋ฉด ์ ๊ธฐ์ virtual์ ์ ๋ถ์ด๊ณ ์์ ํด๋์ค์์ ๊ตฌํ์ ์ ํด์ค๋ ๋๊ณ
์ด๊ฑด Enemy_Dummy.cs์ ReceiveDamage์ธ๋ฐ
์๊ธ์ base ์ธ๊ธํ์ ๊ฑฐ ๋ณด๋๊น ์์์ด๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ํด์ ์๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ฐ ํน์ ๋ชฐ๋ผ์ ์ด๊ฒ๋ ์ฌ๋ฆผ
๋ชฌ์คํฐ๋ง๋ค ๋๋ฏธ์ง๋ฅผ ๋ฐ์์ ๋ ๋ค๋ฅธ ํ๋์ ํ๊ฒ๋ ํ๋ ค๋ฉด ๋ถ๋ชจ์ ReceiveDamage๋ฅผ ์ฌ์ ์ํด์ ์ธ ์ ์์
์ฌ์ฉ๋ฒ์ ๋ญ ์ ๊ฒ์์ ํํธ๋ฐ์ค๋ฅผย Physics2D์ OverlapBoxAll๋ก ํ์ ํ๊ณ ์๋๋ฐ ์ด๊ฑด ๋ฐํ๊ฐ์ผ๋ก ์ฃผ๋ hit์ collider๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ณ
OnTriggerEnter2D๋ฅผ ์ธ๊ฑฐ๋ผ๋ฉด ๋งค๊ฐ๋ณ์๋ก ๋ธ๋ ค์ค๋ collider๋ฅผ collider.GetComponent().ReceiveDamage(damage); ์ด๋ ๊ฒ ์ธ์๋ ์์
GetComponentNoAlloc์ ์ ๊ฐ ๋ง๋ ๊ฑฐ๋๊น ์ ๊ฒฝ์ฐ์ง ๋ง๊ณ GetComponent ์ฐ์ธ์ฌ
๊ทผ๋ฐ ๊ฐ๋ฐํ๋ฉด์ ์ด๋ ๊ฒ ๋งํ๋ ๊ฒ ํ๋๊ฐ์ง๊ฐ ์๋ํ ๋ฐ
๊ทธ๋๋ง๋ค ๋ฌผ์ด๋ดค์ ๋ ์ํ๋ ๋ต๋ณ์ด ๋ฐ๋ก ๋์ค๋๊ฒ๋ ์๋๋๊น C# ๊ธฐ์ด๋ฅผ ๊ณต๋ถํ๊ณ ์ค๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค
๋๋ฆ ์ดํด ์ฝ๊ฒ ๋๋ผ๊ณ ์ด๊ฑด๋ฐ ์ดํด ์๋๋ฉด ๋๊ธ๋ก ๋ ๋ฌผ์ด๋ด์ฃผ์ผ ใ ใ
์ด์ ๊ธ ๋ณด๋ฉด ์์๋ ์ฝ๊ฐ ํท๊ฐ๋ ค ํ๋๊ฑฐ๊ฐ์๋ฐ ์๋ฅผ๋ค์ด์ monster ์์ํ orc๋ goblin slime ๋ฑ๋ฑ์ด ์์ผ๋ฉด orc, goblin, slime ์คํฌ๋ฆฝํธ๋ฅผ ํด๋น ์ค๋ธ์ ํธ์ ๋ถ์ด๊ณ getcomponent<monster>()ํ๋ฉด ์์์ orc, goblin, slime ๋ฆฌํดํด์ค
์.. ๊ทธ๋ผ Monster๋ฅผ ์์ํ orc.cs๊ฐ ์์ ๋ Monster monster = gameobject.Getcomponent<Monster>(); monster.orcmet(); ์ด๋ฐ์์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํด์?
Monster์ orcmet()์ด ์ ์๋์ด ์์ผ๋ฉด ๊ฐ๋ฅํ๊ณ Orc์๋ง orcmet()์ด ์ ์๋์ด ์์ผ๋ฉด ์๋จ
์... ์ฌ์ ์ ๋์ด์์ผ๋ฉด ์ฌ์ฉํ ์ ์๊ณ , ๊ทธ๋ฅ ๋ถ๋ชจ ์ ์ฉ ๋งค์๋๋ฉด ์๋๋ค๋๊ฑฐ๊ตฐ์.....
ใดใดใด ๋ถ๋ชจ๊ฑฐ๋ฉด ์ฌ์ ์ ์๋ผ์์ด๋ ์ฌ์ฉํ ์ ์์ด์ orc๋ ๋ถ๋ชจ๊ฐ ์๋๋ผ ์์์ด์์
์ ๋ต๋ต ๊ทธ๋ ์ฃ ์ ๊ฐ ์์ฑํ๊ณ ์๋ ์คํฌ๋ฆฝํธ๋ orc์์ ๋งค์๋๋ฅผ ๋ถ๋ฌ์์ผ ํด์์ ใ ใ ๋ฐฉ๊ธ ํ ์คํธ ํด๋ดค๋๋ฐ, ์ฌ์ ์ ํ ํจ์๋ฅผ ์ ๋ถ๋ฌ์ค๋๊ตฐ์... ๊ธฐ์ด๊ฐ ๋ถ์กฑํด์ ๋์ฒด ์ ์ฌ์ ์ ํ๋์ง ๋ชฐ๋๋๋ฐ, ์ด๋์ ํ๋๊ตฐ์..... ๊ณ ๋ง์๋๋ค... ๊ฐ์ฌํฉ๋๋ค... ๋๋ถ์ ์ฑ๋ถํ ์ ์๊ฒ ๋์์ด์ ใ ใ
๋คํ์ฑ ๊ฒ์ํด๋ณด๋ฉด ์ข๋ ์๊ธฐ ์ฌ์ธ๊ฒ
๋ต๋ณ์ถ
์ํ! ๊ฒ ์ปดํผ๋ํธ ํ ๋ ํด๋์ค๋ฅผ ํน์ ํ์ง ์๊ณ ํจ์๋ช ์ผ๋ก๋ง ๊ฐ์ ธ์ฌ ์ ์๋์ ?
์๋จ ์ ๊ธฐ ๋ง์งค ๋ณด๋ฉด EnemyBase๋ก GetComponent๋ฅผ ํด์ฃผ๊ณ ์์ ๊ฒฐ๊ตญ์ Enemy_Dummy๋ EnemyBase๋ฅผ ์์๋ฐ๊ณ ์์ผ๋ EnemyBase์ด๊ธฐ๋ ํ๋คใผ๊ทธ๋ฌ๋ EnemyBase๋ก ๋ฐ๋๊ฒ๋ ๊ฐ๋ฅํ๊ฒ ์ฃ EnemyBase์ ReceiveDamage๊ฐ ์์ผ๋ ๊ทธ๊ฑธ ํธ์ถํ ์ ์์ ๊ฒ์ด๊ณ
์ ์ ๊ธฐ ์ ๋ค๋ฆญ ํ์ ์ง์ ํด์ฃผ๋ ๋ถ๋ถ์ด ๋น ์ก๊ตฌ๋ ์ ๊ฑด ๋์จ๊ฐ ๋ณ์ ์ด๋ผ ๊ธ์ธ๋ ํด๋์ค๋ฅผ ํน์ ํด์คฌ๋๋ฐ ์ ๋ก๋ํ๋ฉด์ ๋ ์๊ฐ๊ฑฐ์์
์ํจ๋๋ฆฝํจ - dc App