[๊ฒ์๊ฐ๋ฐ] The Fins
๐น ํ์ดํ : The Fins
๐น ์ฅ๋ฅด : 2D์ ๋ต๋ํ์ค
๐น ํ๋ซํผ : PC
๐น ๊ฐ๋ฐ๊ธฐ๊ฐ : 2019.06 ~ 2019.09
๐น ๊ฐ๋ฐ์ธ์ : 3๋ช
( ํ๋ก๊ทธ๋๋จธ, ๋์์ด๋, ๊ธฐํ์)
๐น ํ๋ ์ดํ์ : 1~2์๊ฐ
๐น ์ฌ์ฉ ํด : Unity
๐ธ ํ๋ ์ด ์์
๐ธ ์คํฌ๋ฆฐ ์ท
๐ธ ๊ฒ์ ์ค๋ช
์น๊ตฌ์ ์์ผ์ ๋ฌผ ๋ง๋ค์ด์ฃผ๊ธฐ ํ๋ก์ ํธ๋ก ๋ง๋ค์ด์ง PROJECT-Aํ์ ๋๋ฒ์งธ ๊ฒ์์
๋๋ค.
์ฟผํฐ๋ทฐ
์์ ์ ์ ๋ต ๋ํ์ค๊ฒ์์ผ๋ก, ํด์์๋ฌผ๋ค์ ์ํํ์ฌ ์ฌ๋ฐฉ์์ ์์์ ธ์ค๋ ์ ๋ค๋ก๋ถํฐ ๊ธฐ์ง๋ฅผ ๋ฐฉ์ดํ๋ฉด์ ๊ณต๊ฒฉ์ ๋ซ๊ณ ๋์๊ฐ ์ ์ ๊ธฐ์ง๋ฅผ ๋ชจ๋ ํ๊ดดํ๋ฉด ์น๋ฆฌํฉ๋๋ค.
โ์กฐ๊ฐโ๋ผ๋ ์์์ ์๋ชจํ์ฌ ์ ๋์ ์๊ตฐ์ ๊ธฐ์ง ์ธ๊ทผ์ ์ง์ ํ ์์น์ ์ํํ ์ ์๋๋ฐ, ์ํ ์ดํ์๋ ํ๋ ์ด์ด๊ฐ ์กฐ์ ํ ์ ์๊ณ ๋จ์ง Ai์ ๋ฐ๋ผ์ ์ด๋,๊ณต๊ฒฉ์ ์์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ค ์ ๋์ ์ด๋ ์์น์ ์ธ์ ์ํํ๋์ง๊ฐ ์ค์ํ ์ ๋ต์ผ๋ก ์์ฉํฉ๋๋ค. ์ํ์ ํ์ํ ์์์ธ โ์กฐ๊ฐโ๋ ์๊ฐ์ด ํ๋ฅด๋ฉด์ ์๋ ํ๋ํ๋ฉฐ R๋ฒํผ์ ํตํด 1์ด๋น ์กฐ๊ฐ ํ๋๋์ ์ ๊ทธ๋ ์ด๋ ํ ์ ์์ต๋๋ค.
๋ค์ํ ๊ณต๋ต๋ฐฉ๋ฒ์ ์๊ตฌํ๋ ์ด 10๊ฐ์ ์คํ ์ด์ง๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
โผ ํด์์๋ฌผ ์ ๋
- 6์ข ๋ฅ์ ์๊ตฐ ์ ๋์ด ์กด์ฌํ๋ฉฐ ๊ฐ๊ฐ ๋ค๋ฅธ ๊ณต๊ฒฉ๋ฐฉ์์ ์ง๋๊ณ ์์ต๋๋ค.
- ์ ๋ํ 4์ข ๋ฅ์ ์ ๋์ด ์กด์ฌํ๋ฉฐ ๊ฐ๊ฐ ๊ณต๊ฒฉ๋ฐฉ์์ด ๋ค๋ฆ ๋๋ค.
-
์ ๋๋ค์ ๋๋ต์ ์ธ ์์ฑ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ ์ ์๋ํ ๋ ํจ์จ์ ์ผ๋ก ๋ณ๋ ฅ์ ์ด์ฉํ๋๊ฒ์ด ํต์ฌ์ ๋๋ค.
- ๊ฐ ์ ๋์ base ํด๋์ค๋ฅผ
์์
ํ์ฌ ๋์ผํ Ai๋ฅผ ์ฌ์ฉํ๊ณ , ์๋ก ๋ค๋ฅธ ๊ณต๊ฒฉ๋ฐฉ์์๊ฐ์ํจ์
์์ค๋ฒ๋ผ์ด๋ฉ
์ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ์ ์ผ๋ก ๊ตฌํํ์์ต๋๋ค.
//base ํด๋์ค์ Attack ํจ์
protected virtual void Attack()
{
if(attackCooldown) return; //๊ณต๊ฒฉ ์ฟจํ์์ด๋ฉด ๊ณต๊ฒฉ๋ถ๊ฐ
attackCooldown = true;
ai.maxSpeed = MoveSpeed * 0.1f; //๊ณต๊ฒฉ ์ค ์ด๋์๋ ๊ฐ์
if(des.target == null)
SetState(unitState.move); //ํ๊ฒ์ด ์์ผ๋ฉด ์ด๋ ์ํ๋ก ์ ์ด
else
{
if(StateCheck(unitState.attack))
Hit(des.target); //๊ณต๊ฒฉ ๊ฐ๋ฅํ ์ํ์ผ ๊ฒฝ์ฐ ๊ณต๊ฒฉ
}
Invoke("setCooldown",AttackSpeed * Random.Range(0.9f,1.1f));
//๊ณต๊ฒฉ ์ฟจํ์ ์ค์
}
โ ์ ๋๋ค์ ๊ณตํต baseํด๋์ค์์ ์ฌ์ฉ๋๋ Attackํจ์. virtual ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ํจ์๋ก ๋ง๋ค์๊ณ , ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ๊ทผํ์ฌ ๊ณต๊ฒฉํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ๊ทผ์ ํ์ฌ ๊ณต๊ฒฉํ๋ ์ ๋์ ๊ฒฝ์ฐ ์ด ํจ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
//baseํด๋์ค์ Attack ํจ์๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํ ์ ๋์ Attackํจ์
protected override void Attack()
{
if (attackCooldown) return; //๊ณต๊ฒฉ ์ฟจํ์์ด๋ฉด ๊ณต๊ฒฉ๋ถ๊ฐ
attackCooldown = true;
if(des.target == null)
SetState(unitState.move); //ํ๊ฒ์ด ์์ผ๋ฉด ์ด๋ ์ํ๋ก ์ ์ด
else
{
if(StateCheck(unitState.attack))
{
//๋ฒ์๊ณต๊ฒฉ์ ๋ฒ์ ๋ด ๋ชจ๋ ์ ์๊ฒ ๊ณต๊ฒฉ
around = Physics2D.OverlapCircleAll(transform.position,AttackRange,1 <<LayerMask.NameToLayer("Enemy"));
for (int i = 0; i < around.Length; i++)
{
if(around[i].gameObject.layer == 10) //layer 10 : enemy
{
effect.SetTrigger("isAttack");
Hit(around[i].transform);
around[i].GetComponent<UnitBase>().SetState(unitState.stun);
}
}
}
}
Invoke("setCooldown",AttackSpeed);
}
โ ๋ฒ์ ๊ณต๊ฒฉ์ ์ฌ์ฉํ๋ ์ ๋์ ๊ฒฝ์ฐ baseํด๋์ค์ Attackํจ์๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ์ ๋ก์ง์ ์ ์ฉํด ์ฃผ์์ต๋๋ค. ๊ทธ ์ธ์๋ ์๊ฑฐ๋ฆฌ ๊ณต๊ฒฉ์ ํฌ์ฌ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ ๋๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ์ฌ์ฉํด ๊ฐ์ Attack ํจ์๋ด์์ ํฌ์ฌ์ฒด๋ฅผ ๋์ง๋๋ก ๊ตฌํํ์์ต๋๋ค.
โผ ์ ๋์ AI
๊ฐ ์ ๋์ ๊ณตํต๋ base ํด๋์ค์ FSM(finite state machine)์ ๋ฐ๋ผ ํ๋ํฉ๋๋ค.
- ์ํ :
- ์ํ๋ ์ ๋์ ์ฆ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ๊ธฐ์ง๋ฅผ ๊ณต๊ฒฉ ๋์์ผ๋ก ์ง์ ํ๊ณ ์ด๋์ ๊ฐ์ํฉ๋๋ค.
- ์ํ ์งํ์๋ ๊ณต๊ฒฉ ์ฌ์ฌ์ฉ ๋๊ธฐ์๊ฐ์ ๊ฐ์ต๋๋ค.
- ์ด๋ :
- ๊ณต๊ฒฉ ๋์์ ํฅํด ์ด๋ํ๋ฉฐ ์ง์ ๋ ํ์ง๋ฒ์ ๋ด์ ์ ์ ๋์ด ๋ค์ด์ค๋ฉด ๊ณต๊ฒฉ๋์์ ์ ์ ๋์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋์์ ํฅํด ์ด๋๊ฒฝ๋ก๋ฅผ ๋ฐ๊ฟ๋๋ค. ์ ๋์ ์ด๋์
A*๊ธธ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ
์ ๊ธฐ๋ฐ์ผ๋ก ํ์์ต๋๋ค. - ์ ์ ๋์ด ์ง์ ๋ ๊ณต๊ฒฉ๋ฒ์ ๋ด์ ๋ค์ด์ค๋ฉด, ๊ณต๊ฒฉ์ ๊ฐ์ํฉ๋๋ค.
- ๋ค๋ฅธ ์๊ตฐ ์ ๋์ ์ฅ์ ๋ฌผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ 0.2์ด๋ง๋ค ๊ฒฝ๋ก๋ฅผ ๊ฐฑ์ ํ์ฌ ๋ค๋ฅธ ์ ๋์ ํผํด๊ฐ๋๋ค.
- ๊ณต๊ฒฉ ๋์์ ํฅํด ์ด๋ํ๋ฉฐ ์ง์ ๋ ํ์ง๋ฒ์ ๋ด์ ์ ์ ๋์ด ๋ค์ด์ค๋ฉด ๊ณต๊ฒฉ๋์์ ์ ์ ๋์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋์์ ํฅํด ์ด๋๊ฒฝ๋ก๋ฅผ ๋ฐ๊ฟ๋๋ค. ์ ๋์ ์ด๋์
- ๊ณต๊ฒฉ :
- ๊ณต๊ฒฉ๋์์ด ๊ณต๊ฒฉ๋ฒ์ ๋ด์ ์๋ค๋ฉด, ์ด๋์๋๋ฅผ ๋ฎ์ถ๊ณ ์ฆ์ ๊ณต๊ฒฉํ์ฌ ํผํด๋ฅผ ์ ํ ํ ๊ณต๊ฒฉ ์ฌ์ฌ์ฉ ๋๊ธฐ์๊ฐ์ ๊ฐ์ต๋๋ค. ๊ฐ ์ ๋๋ณ๋ก ์ฌ์ฌ์ฉ ๋๊ธฐ์๊ฐ์ ๋ค๋ฅด๋ฉฐ ๋๊ธฐ์๊ฐ์ด ์ข ๋ฃ๋๋ฉด ๋ค์ ๊ณต๊ฒฉํฉ๋๋ค.
- ๊ณต๊ฒฉ๋์์ด ์ด์์๋ ํ ์ง์ํ์ฌ ๊ณต๊ฒฉ์ ๋ฐ๋ณตํฉ๋๋ค.
- ๊ณต๊ฒฉ๋์์ด ์ฌ๋ผ์ก๋ค๋ฉด ๋ค์ ์ด๋ ์ํ๋ก ๋์๊ฐ๋๋ค.
- ์ฃฝ์ :
- ์ ๋์ ์ฒด๋ ฅ์ด ๋คํ๋ฉด ์ฃฝ์ ์ ๋๋ฉ์ด์ ๊ณผ ํจ๊ป ์๋ฉธํฉ๋๋ค.
< ํ
์คํธ ๋ฒ์ ์ ์ ๋ AI ์๋ ๋ชจ์ต >
< ์ด๋๊ฒฝ๋ก(์ด๋ก์ค์ ) / ํ์ง๋ฒ์(ํ๋ ์) / ๊ณต๊ฒฉ๋ฒ์(๋นจ๊ฐ ์) >
โผ ๋ ๋ฒจ ๋์์ธ ํด
์ ๋ํฐ์ custom inspector
๋ฅผ ์ด์ฉํด ์คํ
์ด์ง๋ฅผ ์ ์ํ๋ ํด์ ๋ง๋ค์ด ์ฌ์ฉํ์์ต๋๋ค.
์คํ
์ด์ง ๋ ๋ฒจ ๋์์ธ์ ์ ๋ฟ๋ง ์๋๋ผ ๋์์ด๋์ ๊ธฐํ์ ๋ชจ๋ ์ฐธ์ฌํ๊ณ ์์๋ก ์์น๋ฅผ ๋ณ๊ฒฝํ๋ฉฐ ํ
์คํธ๋ฅผ ํด์ผ ํ๊ธฐ์ ์ฝ๊ฒ ๋ ๋ฒจ์ ๋ง๋ค ์ ์๋ ๋๊ตฌ๊ฐ ํ์ํ์ต๋๋ค. ์ ๋ํฐ ์์ง ๋ด์์ ๋ฏธ์
์ข
๋ฅ๋ถํฐ ์จ์ด๋ธ ์ค์ ๊น์ง ์คํ
์ด์ง์ ๊ดํ ๋ชจ๋ ๊ฒ๋ค ์ค์ ํ ์ ์๋๋ก ํ์ต๋๋ค. ์ด ๋ ๋ฒจ ๋์์ธ ํด ๋์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋์ด๋ ์คํ
์ด์ง๋ณ๋ก ์ฝ๊ฒ ์์ ๋ฐ ํ
์คํธ๊ฐ ๊ฐ๋ฅํด์ง๋ฉด์ ๊ฐ๋ฐ์ ์๋๊ฐ ๋ถ์์ต๋๋ค.
โผ ๋ฏธ๋๋งต
๊ฒ์ ํ๋ฉด์ ์ฐ์ธก ์๋จ์ ๋งต ์ ์ฒด๋ฅผ ์์ด์ฝ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๋ฏธ๋๋งต์ ๊ตฌํํ์์ต๋๋ค. ๋ฉ์ธ์นด๋ฉ๋ผ ์ธ์ ์นด๋ฉ๋ผ ์ค๋ธ์ ํธ๋ฅผ ํ๋ ๋ ๋์ด ๋งต ์ ์ฒด๋ฅผ ๋น์ถ๋๋ก ํ ํ, ์ ๋๊ณผ ๊ธฐ์ง์ ๋ฏธ๋ฆฌ ๋ฃ์ด๋ ์์ด์ฝ๋ง ์นด๋ฉ๋ผ์ ๋ ๋๋ง ๋๋๋ก culling mask
์ render texture
๋ฅผ ์ค์ ํ์ฌ ๋ฏธ๋๋งต์ ๋ง๋ค์์ต๋๋ค.
๋ํ ๋ฏธ๋๋งต์ ํน์ ์์น๋ฅผ ๋ง์ฐ์ค๋ก ํด๋ฆญํ๋ฉด ์ค์ ๋งต์์์ ํด๋นํ๋ ์์น๋ก ์ด๋ํ๋๋ก ํ์์ต๋๋ค.
โผ ์ค๋ธ์ ํธ ํ๋ง
์ค๋ธ์ ํธ๊ฐ ์์ญ๊ฐ์์ ์๋ฐฑ๊ฐ๊น์ง ํ๋์ ํ๋ฉด์์ ๋ฑ์ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํผํฌ๋จผ์ค ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด์ผ๋ง ํ์ต๋๋ค. PC์์ ๊ตฌ๋๋๋ ๊ฒ์์ด๋ผ ๋ชจ๋ฐ์ผ๋งํผ ์ฌ์์ ๊ฑฑ์ ํ ํ์๋ ์์์ผ๋ ๋งค๋ฒ ์์ญ๊ฐ์ ์ค๋ธ์ ํธ๊ฐ ์์ฑ-์๋ฉธ๋๋ฉด C#์ Garbage Collection
์ด ์๋ํ๋ฉฐ ์๊ฐ์ ์ธ ํ๋ ์ ๋๋์ด ๋ฐ์ํ ์๋ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๋๋ค์ ์ค๋ธ์ ํธ ํ๋ง ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ์ฌ์ด ๋ก๋๋ ๋ ๋ง์ ์์ ์ค๋ธ์ ํธ๋ฅผ ๋ฏธ๋ฆฌ ํ์ ์์ฑํด ๋์์ต๋๋ค. ์ ๋์ ์ํํด์ผ ํ ๋ ํ์์ ๊บผ๋ด์ ์ฌ์ฉํ๊ณ , ์ ๋์ด ์ฃฝ์ผ๋ฉด ํ๋ก ๋๋๋ ค์ ๋งค๋ฒ ์ค๋ธ์ ํธ๊ฐ ์์ฑ-์๋ฉธ๋๋๋ฐ์ ๋ฐ์ ๊ฐ๋ฅํ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ๋ ค๊ณ ํ์ต๋๋ค.
๐ธ ๊ฐ๋ฐ ์๋
์ ํด์์๋ฌผ์ด ๋ฑ์ฅํ๋ ๊ฒ์์ธ๊ฐ? ๋ผ๊ณ ํ๋ค๋ฉด, ์ด ๊ฒ์์ ์์ผ์ ๋ฌผ๋ก ๋ฐ์ ์น๊ตฌ๊ฐ ํด์์ฐ๊ตฌ์์ ์ง์์ด์๊ณ ์น๊ตฌ์ ๊ด๋ จ๋ ๋ด์ฉ์ ๋ด๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ๋๋ค๐ ๊ฐ์ฅ ๋จผ์ ํ ๋ง๋ฅผ ํด์์๋ฌผ๋ก ์ ํ ๋ค์ ๋ํ์ค ์ชฝ์ผ๋ก ๊ฐ๋ฅ์ ์ก์์ต๋๋ค. ๊ธฐํ๋น์ ๋ํ์ ์คํ ์ฒด์ค๋ ๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋์ ์ ๋ต์ ํ ์ ํฌ(TFT)๋ก ๋ํ๋๋ ์คํ ๋ฐฐํ๋ฌ(auto battler)์ฅ๋ฅด๊ฐ ์ธ๊ธฐ๋ฅผ ๋๊ธฐ ์์ํ ๋ฌด๋ ต์ด๋ผ, ์ด์ ๋น์ทํ๊ฒ ์ ํฌ ์ ์๋ ํ๋ ์ด์ด๊ฐ ๊ฐ์ ํ๋ ์ ํฌ ์์ฒด๋ ์๋์ผ๋ก ์งํ๋๋ ๊ฒ์์ ๋ง๋ค๊ณ ์ ํ์ต๋๋ค.
๋ํ์ค ๋ฅ์ ๊ฒ์์ด์ง๋ง ๋จ์ํ ๋ง๊ธฐ๋ง ํ๋๊ฒ์ด ์๋๋ผ, ์ ๊ธฐ์ง๊น์ง ํ๊ดด๋ฅผ ํด์ผํ๋ ๋ฐฉ์์ ์ถ๊ฐํ์๊ณ ์ด๊ฒ์ด ์ ๋ต์ ์ธ ๊ณ ๋ฏผ์ ํ๊ฒ ๋ง๋ค๋ฉด์ ๋ค๋ฅธ ๊ฒ์๊ณผ์ ์ฐจ๋ณ์ ์ด ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๐ธ ๊ธ์ ์ ์ธ ๋ถ๋ถ
๋ ๊ฒ์์ ๊ฐ๋ฐํ๋ฉด์ ์ค์ค๋ก์ ์ฝ๋์ ๋ํ ์์ฌ์ด ์์ต๋๋ค. ๋ด ์ฝ๋๋ ์ข์ ์ฝ๋์ผ๊น? ๋จ๋ค์ด ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋์ผ๊น? ํ๋ ๊ณ ๋ฏผ์ด ์์๋๋ฐ, ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ํ๋ก๊ทธ๋๋ฐ์ ์กฐ๊ธ ํ ์ค ์๋ ๋์์ด๋์๊ฒ ์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ์ด๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์์ฉํ๋ ๊ฒ์ ๋ณด๋ฉด์ ์์ฌ์ด ์กฐ๊ธ์ ํ์ ์ผ๋ก ๋ฐ๋์์ต๋๋ค.
๊ฐ๋ฐํ๋ฉด์ ์ค์ ์ ์ผ๋ก ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ ์ฌ์ฉํ๊ธฐ ํธํ๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋์ํ๋ ์ฝ๋๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ ๊ฒ์ ๋๋ค๐ฉโ๐ป
์์ง ๋ฐฐ์๋๊ฐ๋ ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์๋๋ ์ค์ํ์ง๋ง ํ๊ต๋ ์ธํฐ๋ท์์ ๊ทธ๊ฐ ๋ฐฐ์์จ ์ง์์ ์ ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ค๊ณ ํ๋ ํธ์ ๋๋ค. Fins์์๋ ํ์ตํ๋ ์ค๋ธ์ ํธํ๋ง์ด๋ ์ปค์คํ ์ธ์คํํฐ, A*๋ผ๋ ๊ธธ์ฐพ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ ์ ํ์๊ณ , ์ค์ ๋ก ๊ฒ์์ ํ์ฉํ์์ต๋๋ค! ์๋ก์ด ์๋๋ฅผ ํ๋ ๊ฒ์ ํญ์ ์ฆ๊ฒ์ต๋๋ค๐
๋ํ ๋ ๋ฒจ ๋์์ธ ํด์ ์ ์ํ๋ฉด์ ํ์ธ์ ์์ ์ ํธํ๊ฒ ๋์์ฃผ๋ ๊ณผ์ ๋ ์๋นํ ์ฌ๋ฏธ์์์ต๋๋ค.
๐ธ ์์ฌ์ ๋ ๋ถ๋ถ
์น๊ตฌ์๊ฒ ์ ๋ฌผ๋ก ์ฃผ๊ธฐ ์ํ 1์ฐจ ๋น๋๋ฅผ ์์ฑํ ํ, ์ถ๊ฐ ๊ฐ๋ฐ๋ก ์ ๋๊ณผ ์คํ ์ด์ง ์ถ๊ฐ, ์ ๋ ์ ๊ทธ๋ ์ด๋ ์์คํ ์ ์ถ๊ฐํ๊ธฐ๋ก ํ์๋ฅผ ํ์์ต๋๋ค. ์ผ๋ถ ์ถ๊ฐ ์ ๋์ ๊ฐ๋ฐํ๋ ์ค ์๋ก์ ํ์ ๋ฌธ์ ๋ก ์๊ฐ์ ๋ด๊ธฐ๊ฐ ์ด๋ ค์ ํ๋ก์ ํธ๊ฐ ์ ์ ์ค๋จ๋์์ต๋๋ค.
(post-code: the-fins)