์๋ 2๋ก ํต์ฌ ํ์ ๊ธฐ๋ฌผ๋ค ์ค๋ช ๊ฒธ ์ ๋๋ฉ์ด์ ๋ณด์ฌ์ค๋ผํ๋๋ฐ ์ ๋๋ฉ์ด์ ๋ชจ๋ ๋ง๋ ๊ฑฐ๋ถํฐ ์จ๋ณด๋ คํจ
์ ๋๋ฉ์ดํฐ ์์ฐ๊ณ ์คํฌ๋ฆฝํธ๋ก ๊ตฌํํ์๋ ๋ฅ๋ ฅ์๋ถ๋ค์ ์ด๋ฏธ ๋ง๊ฒ ์ง๋ง, ๋๋ฅผ ๋น๋กฏํ ์ด๋ณด ๊ฐ๋ฐ์๋ค์ ์ด๋ฐ๊ฑธ ์ ๋ชจ๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ ์ง์ ๊ณต์ ๊ฒธ ์จ๋ด
๋๋ค.
์ ๋ ์ด๋์ ๋ฐฐ์ด๊ฑฐ์ ใ ใ
๊ฐ๋ฐ์ธ์ด: C#
๊ฐ๋ฐํด: Unity 2021 LTS
์ด๊ฑด ๋ฐฉ๊ธ ์ฌ๋ฆฐ ๊ฐ๋ฐ์ผ์ง 1
https://gall.dcinside.com/m/game_dev/116598
[์ ์์ค๊ฒ์์ฆ] ํฝ์ ํฌ์ปค ๋ํ์ค ๊ฐ๋ฐ์ผ์ง #1 - ๊ฒ์ ๊ฐ์2022๋ 7์๋ถํฐ ๊ฐ๋ฐ ์์ํ ๋ชจ๋ฐ์ผ ๊ฒ์์ธ๋ฐ ์จ์ผ์ง ์จ์ผ์ง ํ๋ค๊ฐ ๊ณ์ ๋ฏธ๋ฃจ๊ณ ์ฌํด ์๋๋ค์ค์ ๊ฐ๋ฐ ์์ํ๊ฑด 9์๋ถํฐ๋ผ ์ฒ์ ์ฌ๋ฆฌ๋๊ฑฐ์น๊ณ ์์ด ๋ง์ผ๋ ์ดํดํด์ฃผ์ญ์ผ์ฐ์ ํฝํฌ๋๋ ์คํ ์ ์ฆ๋งต "ํฌ ํฌ์ปค ๋ํ์คgall.dcinside.com1. ์ ๋๋ฉ์ด์ ๋ชจ๋์ด ๋ญ์?
์ ๋๋ฉ์ด์ ๋ชจ๋์ ์ ๋ํฐ์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ์ ๋๋ฉ์ดํฐ๋ฅผ ์ฐ์ง ์๊ณ ์คํฌ๋ฆฝํธ๋ก ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๋ ๋ชจ๋์
์ฐ๋ฆฌ ๊ฒ์์ ์ผ๋จ ํ์์๋ ์ ๋๋ฉ์ดํฐ๋ฅผ ์ฐ์ง ์๊ณ ๋ชจ๋๋ก ๊ตฌํํ๊ณ ์์.
Enemy๋ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ก ์ผ๋จ ๋ณด๋ฅํ๊ณ ์ ๋๋ฉ์ดํฐ ์ฌ์ฉ์ค
2. ๊ทธ๋์ ์ ๋๋ฉ์ดํฐ๋ ์ ์์?
์ ๋๋ฉ์ดํฐ์ ์ฅ๋จ์ ๋ถํฐ ๋งํ์๋ฉด
์ฅ์ ์ผ๋ก๋
๋ง๋ค๊ธฐ ์ฝ๋ค.
์๋ ์กฐ์
ํธ๋ฆฌ๊ฑฐ๋ ๋ถ๋ฆฌ์ธ์ผ๋ก ์ ๋๋ฉ์ด์ ๋์ ์ปจํธ๋กค
ํ๋ ์ด ํ๋ฉด์ ์ ๋๋ฉ์ดํฐ๋ฅผ ํ์ธํ๋ฉด ์ด๋ค๊ฒ ์ฌ์๋๊ณ ์๋์ง ๊ตฌ๋ถ ๊ฐ๋ฅ
๋ฑ์ด ์๊ณ
๋จ์ ์ผ๋ก๋
๋ง๋ค๊ธฐ ๊ท์ฐฎ๋ค(์ ๋๋ฉ์ด์ ์ ์ฉํ๋ ๊ธฐ๋ฌผ๋ง๋ค ๋ง๋ค์ด์ค์ผ๋จ)
๋ด ์ ๋ง๋๋ก ์ปจํธ๋กคํ๊ธฐ ํ๋ค๋ค -> ์๋ฅผ๋ค๋ฉด ์ธ๋ฐํ ์๋ ์กฐ์
๋ฑ์ด ์๋๋ฐ ๋ง๋ค๊ธฐ ๊ท์ฐฎ๋ค๋๊ฒ ์ ์ผ ํฐ ๋ฌธ์ ์
์ผ๋จ ์ ๋๋ฉ์ดํฐ๋ก ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๋ ค๋ฉด ๋๋ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์นจ
1. ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๋ ค๋ ์ด๋ฏธ์ง๋ค์ ๋์๋ณ๋ก ์ ๋๋ฉ์ด์ ํ ํ๋ค
2. ๋น ์ ๋๋ฉ์ดํฐ๋ฅผ ์์ฑํด์ State๋ฅผ ๋ง๋ ๋ค
3. Trigger๋ Boolean์ ์ด์ฉํด ์ปจํธ๋กคํ๋ ๊ฒฝ์ฐ Parameter๋ฅผ ์ง์ ํด์ค๋ค
4. State์ 1์์ ๋ง๋ ์ ๋๋ฉ์ด์ ์ ๋ฃ๋๋ค
5. ์ฝ๋์ ์ ์ฉํ๋ค
์ ๋์ธ๋ฐ ์ ๋๋ฉ์ด์ ๋ชจ๋์ ์ด์ฉํ๋ฉด 1, 2, 3, 4 ๊ณผ์ ์ด ์ฌ๋ผ์ง๊ณ ์ฝ๋์ ์ ์ฉ๋ง ํ๋ฉด ๋จ
3. ๊ทธ๋์ ์ด๋ป๊ฒ ๋ง๋๋
์ผ๋จ Resources ๋ผ๋ ํด๋๋ฅผ Assets ํด๋์ ๋ง๋ค๊ณ ์ํ๋ ๊ฒฝ๋ก์ ์ด๋ฏธ์ง ํ์ผ์ ๋ชจ๋ ๋ฃ์ด์ค
์ผ๋จ ์ค๋ ์ค๋ช ์ ์ํ ๊ธฐ๋ฌผ๋ก
์๊ฐ ๊ณ ์ํด์ค๊ฑฐ์
Archer๋ผ๋ ๊ธฐ๋ฌผ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๊ธฐ ์ํด ์์ณ ์ด๋ฏธ์ง๋ฅผ Resources/unit/Tower/Archer ํด๋์ ๋ฃ์ด์ฃผ๊ฒ ์
์ด๋ ๊ฒ ๋ฃ์ด๋ง ์ฃผ๊ณ ์ฝ๋ ์ ์ฉํ๋ฉด ์ฌ์ค ์ ๋๋ฉ์ด์
์ ์ฉ์ ๋์
๊ทผ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ค์ํ๊ฑด ์ฝ๋ ๋์ ๊ณผ์ ์ด์์? ์ด๋ป๊ฒ path๋ง ์ง์ ํด์คฌ๋๋ฐ ์ ๋๋ฉ์ด์ ์ ์ฉ์ด ๋๋๊ฑด์ง ์์๋ณด์
๋จผ์ ์ฐ๋ฆฌ tower prefab์๋
์ด๋ฐ ์์๋ค์ด ์์
์ด ์ค์ Atk Projectile์ด๋ผ ์ ์ธ ๊ณณ์ด ํ์์ ๊ณต๊ฒฉ๋ง๋ค ์๋ ๊ณ ์ Projectile์ ์ฝ๊ฒ ๋งํด์ ํฌ์ฌ์ฒด ์ค๋ธ์ ํธ๋ผ ์๊ฐํ๋ฉด ๋จ
ํฌ์ฌ์ฒด ์ค๋ธ์ ํธ Enum์ผ๋ก ์ด๋ฆ์ ๋ง๋ค์ด์ฃผ๊ณ ๊ทธ๊ฑธ ์ด์ฉํด์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์๊ฐ๋๊ฑฐ์
๋ชจ๋์ Setupํจ์
ํ์ ์์ฑ์ component์ ์๋ animation module ์คํฌ๋ฆฝํธ์์ ์ฝํ๋ ํจ์์
์์ ๊ณ ์ ํฌ์ฌ์ฒด ์ด๋ฆ์ด ๋ณดํต ํ์์ ์ด๋ฆ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก idle, attack, skill๋ก ๊ตฌ๋ถํด์ ์ธ๊ฐ์ง ๊ธฐ๋ณธ ์ ๋๋ฉ์ด์ path๋ฅผ ๋ถ๋ฌ์ค๊ณ
sub attack์ด๋ ์คํฌ ์ฌ์ฉ ํ ๋ชจ์ ๋ฑ ์ถ๊ฐ์ ์ธ ๋ชจ์ ์ ๊ทธ๋๊ทธ๋ ํ์ํ ๋๋ง๋ค ๋ง๋ค์ด์ ์ ์ฉํ๋ ์ค์
๋ณด๋ฉด ์๊ฒ ์ง๋ง setup๋ง ํ๋ฉด ์ด๋ฏธ์ง๋ค์ด ์ค๋ธ์ ํธ์ ์ ์ฅ๋ผ์ ๋ฐ๋ก ๋ญ ํ ํ์ ์์ด prefab๋ง ๋ง๋ค๋ฉด ๊ธฐ๋ณธ์ ์ธ ์ ๋๋ฉ์ด์ ์ ๋ค ์ง์๋๋ค๋ ํน์ฅ์ ์ด ์๋ค
๋จผ์ ์ ๋๋ฉ์ด์ playํ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ค๊ฑด๋ฐ string์ ๋ฐ์์ ํผ ์ฒด์ธ์ง๋ฅผ ํด์ค๊ฑฐ๊ณ , delayํจ์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์
์ฝ๋ฃจํดํจ์๋ก ๊ตฌํํด์ค
์๊น ์ ์ฅํด๋์ ์ด๋ฏธ์ง array์์ ์์๋๋ก renderer์ ๋ฃ์ด์ฃผ๋ฉด์ ์ฌ์ด์ฌ์ด ์ง์ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋ด๊ฐ ์ํ๋ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์ฌ์๋๋ ์ ๋๋ฉ์ด์ ์ด ํ์ํ๋๊ฑฐ์
๊ทผ๋ฐ ๋ณดํต ๊ฒ์์ด ์ ๋๋ฉ์ด์ ์ ํ๋ฒ์ฉ๋ง ์ฌ์ํ๋๊ฑด ์๋์์? ๊ฐ๋ง์์ผ๋ฉด ๋ค์ฉ๋ค์ฉํ๋ค๊ฐ ๊ณต๊ฒฉํ ๋๋ง ๊ณต๊ฒฉ ์ ๋๋ฉ์ด์ ์ ์ถ๋ ฅํด์ผ๋๋ค.
๊ทธ๋์ Updateํจ์๋ก ๊ณ์ํด์ ์ฝ๋ฃจํด ํจ์๋ฅผ ํธ์ถํด์ค๊ฑฐ์
๊ทผ๋ฐ ์ฐ๋ฆฌ ์ ๋ํฐ C#์ ๋ฐ๋ก ๋ด๊ฐ ์ํ์ง ์์๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ฝ๋๊ฐ ๊ตฌํ๋จ
์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ C์์๋ while๋ฌธ์ ๋๋ฉด์ ํจ์๋ฅผ ๋ฐ๋ณต์คํ์ํค๋ฉด ํจ์๊ฐ ์์ ํ ๋๋๊ณ ๋ค์ ํจ์๊ฐ ํธ์ถ๋๋ค
while(1){
printnum(num);
num++;
}
์ด๋ผ๋ ์ฝ๋๊ฐ ์๊ณ printnum ์์ 1์ด๋ง๋ค ์ง์ฐ์ด ์๋ค ์น๋ฉด C์์๋ 1 2 3 4 5 ... ์ด๋ฐ์์ผ๋ก 1์ฉ ์ฆ๊ฐํ๋ฉฐ ์ถ๋ ฅ๋์ง๋ง
๋น๋๊ธฐ์ ์ผ๋ก ๋์๊ฐ๋ C# ์ ๋ํฐ์์๋ 1 1 1 1 1 1 1 1 1 .... (1์ด๋ค) 112412 112412 112412 112412 112412 ... ์ด๋ฐ์์ผ๋ก ๊ฐ ์ด์ง๋ฝ๊ฒ ๋์๊ฐ
๊ทธ๋์ ์ ์ฌ์ง์ฒ๋ผ check๋ผ๋ ๋ณ์๋ฅผ ์ด์ฉํด์ ์ง๊ธ ๋ด ์ ๋๋ฉ์ด์ ์ด ๋์ํ๊ณ ์๋๊ฐ๋ฅผ ํ๋ณํด์ค์ผ๋จ
idle์ด ์ด๋ฏธ ์ฌ์๋๊ณ ์์ผ๋ฉด idle์ ์ฌ์ํ๋ ์ฝ๋ฃจํดํจ์๋ฅผ ํฌํจํ ๋ค๋ฅธ ์ ๋๋ฉ์ด์ ํจ์๋ฅผ ํธ์ถํ์ง ์๊ฒ ใ ใ
๊ทผ๋ฐ ์์ ์ค๊ฐ์ ์๋ฉ์ถ๋ฉด idle ์ํ์์ ๊ณต๊ฒฉ์ผ๋ก ์ ํ๋ ๋ ๋ค์ฉ์ ๋ค ํ๊ณ ๊ณต๊ฒฉ ์ ๋๋ฉ์ด์ ์ด ์ถ๋ ฅ๋๋ ๋ถ์์ฌ๊ฐ ๋ฐ์ํจ
๊ทธ๋์ if (!state.Equals("PlayIdle")) break; ๋ถ๋ถ์ ์ถ๊ฐํด์ change animation์ด ํธ์ถ๋์ด ๋ชจ์ ์ด ๋ฐ๋์ด์ผ ๋๋ฉด ์ค๊ฐ์ ๋ฉ์ถ๋ ๊ธฐ๋ฅ์ ๋ฃ์ด๋์
์ด์ ํ์์ ์ ์ฉํด๋ณด์
์ด๊ฑด TowerWeapon ์คํฌ๋ฆฝํธ ์ผ๋ถ๋ถ์ธ๋ฐ ์์ณ ๊ณต๊ฒฉ ๊ณผ์ ์
animator.SetTrigger("Attack") ๋ถ๋ถ์ด gameObject.GetComponent<AnimatorModule>().ChangeAnimation("PlayAttack"); ๋ก ๋ฐ๋์๋ค
๋๋ ์ ๋๋ฉ์ดํฐ ์ธ ๋๋ 4ํ๋ ์์งธ์ ๊ณต๊ฒฉ์ด ๋๊ฐ์ผ๋๋ฉด ์ง์ฐ์ ์ผ๋ง์ค์ผ๋๋์ง ๋์ถฉ ๊ฐ์ผ๋ก ๋๋ ค๋ฐ์๋๋ฐ
์ด์ 4ํ๋ ์์งธ ๊ณต๊ฒฉ์ด ๋๊ฐ๋๊ฑธ ์๋ฉด 0.3์ด ์ง์ฐ ํ ํฌ์ฌ์ฒด ์์ฑ ๋ฐ ๋ฐ์ฌ๋ฅผ ํ๋ฉด ๋๋์ง ์ ์ ์๋ค.
์ด๋ ์ ๋๋ฉ์ด์ ์คํผ๋๋ฅผ ์กฐ์ ํ๋ฉด ์คํฌ๋ฆฝํธ ์ฐจ์์์ ํ ๋ฒ์ ๊ด๋ฆฌํ๊ธฐ๋ ์ฉ์ดํ๊ธฐ ๋๋ฌธ์ ์ ์ง ๋ณด์ ์ธก๋ฉด์์๋ ํน์ฅ์ ์ด ์๋ค ์๊ฐํจ
๋ง์ง๋ง์ผ๋ก ์์ณ ํ๋ ์ด ์์ ๋ณด๊ณ ๋ง๋ฌด๋ฆฌํ๊ฒ ์
์ ๋๋ฉ์ดํฐ๊ฐ ๊ท์ฐฎ์์ ๋ผ๊ธฐ์๋ ๋๋ฌด ๋ณต์กํ๊ฑฐ ์์๋๊น
์ผ๋จ ๋ง๋ค์ด ๋์ผ๋ฉด ํ์ ์ฐ๋๊น์.. - dc App
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ค... ์ค๋ฒ๋ผ์ด๋ ์ปจํธ๋กค๋ฌ๋ ์ฒจ๋ค์ด๋ณด๋ค ์ผ๋จ ์ฐพ์๋ณด๊ฒ ์ - dc App
์ค๋ฒ๋ผ์ด๋ ์ปจํธ๋กค๋ฌ ์ฐ๋ฉด ํ์คํ ์ ๋๋ฉ์ดํฐ ์ผ์ผ์ด ๋ง๋๋๊ฑฐ๋ณด๋จ ํธํ๋ค... ๋ชจ๋๋ง์ ์ฅ์ ์ด ์๊ฒ ์ง๋ง ์ ๋๋ฉ์ดํฐ๊ฐ ๋ ๋์ ๊ฒฝ์ฐ์ ์ค๋ฒ๋ผ์ด๋ ์ปจํธ๋กค๋ฌ ์ฐ๋๊ฒ ํจ ๋์๋ฏ ใฑใ ใฑใ - dc App
๋ด๊ฐ ๋ง๋ค๋ค๋ง ํ์๋ํ์ค ์๊ฐ๋๋ค. ์ง๊ธ์ด๋ผ๋ ๋ค์ ๋ง๋ค์ด๋ณผ๊น
๋ค์ ํด๋ณด์ - dc App