2D ํก์คํฌ๋กค ํ๋ง๊ฒ์์ ๋ง๋๋๋ฐ
๋ค ๋์ง๋ง ์ด์๋ฐ์ฌ ๊ตฌํ์์ ๋งํ๋๋ค.
ํ์ฌ ์ด์ ๋ฐ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ ๊ฒ ํด๋์๊ตฌ์.
update์์ Bshoot();
ํด๋์์ต๋๋ค..
void Bshoot()
ย ย {
ย ย ย ย transform.Translate(Vector2.right * bulletspeed * Time.deltaTime);
ย ย ย ย if(pctrl.Bdirection == 1)
ย ย ย ย {
ย ย ย ย ย ย transform.Translate(Vector2.left * bulletspeed * Time.deltaTime);
ย ย ย ย }
ย ย ย ย ย
ย ย }
์ด๋ ๊ฒ ํด๋ ์๋๊ณ ์ดํ๋ฌธ ์์์๋๊ฑธ ์ดํ๋ฌธ ์์๋ฃ๊ณ if์ else if๋ก ํด๋ ๋ ํผ๋ฐ์ค๊ฐ ์ค์ ์๋์๋ค๋ ์ค๋ฅ๊ฐ ๊ณ์ํด์ ๋จ๊ณ ๋์๊ฐ์ง ์๋ค์ ์ด์์ด.
์ ๊ธฐ์ pctrl์ ์์์ ํ๋ ์ด์ด ์ปจํธ๋กค์์ Bdirction์ ์ฐธ์กฐํ๋ ค๊ณ ์ ์ธ ํด๋์๊ตฌ์. B๋๋ ์ ์ ์บ๋ฆญํฐ๊ฐ ์ค๋ฅธ์ชฝ์ผ๋ก๊ฐ๋ฉด 0 ์ผ์ชฝ์ด๋ฉด 1๋ก ๊ฐ์ด ๋ฐ๋๋๊ฒ ํ์ธ์ด ๋์์ต๋๋ค.
bshoot ์ ๋๊ฐ ํ๋๊ฑด๋ฐ?.. translate ๋ ์ด์ ์ค์ค๋ก ์์ง์ด๋ ๊ฑธ๊บผ๊ณ ํ๋ ์ด์ด๊ฐ ์ด์์ instantiate ํ๋๊ฒ ๋จผ์ ์๋๊ฐ?
ใด ์ธ์คํด์์์ดํธ๋ ๋ถ๋ ์คํฌ๋์์ ์คํฐ ํด์ค์ ํ๋ ์ด์ด ์ปจํธ๋กค์์ ํค๋ฅผ ๋๋ฅด๋ฉด ๋ถ๋ ์คํฌ๋์์ ์ธ์คํด์ค ์์ผ์ค.
์ด ์ฝ๋๋ง ๋ด์ NullReferenceException ๋ฐ๊ณณ์ด pctrl ๋ฐ์ ์๋๊ฑฐ์ ๋
์ด๊ฒ ์ดํ๋ฌธ๋ง ๊ฑธ๋ฉด ๋๋ ํผ๋ฐ์ค ๋จ๊ณ ์๊ฑธ๊ณ ๊ทธ๋ฅ ์ค๋ฅธ์ชฝ์ผ๋ก๋ง ๋๊ฐ๊ฒ ํ๋ฉด ์ ๋ ์๊ฐ์.
pctrl ์ ์ธ๋งํ๊ณ ์ฐธ์กฐ๋ ์ํ๊ฒ์ ์๋์ง?
๋๋ ํผ๋ฐ์ค ๋ฐ๊ฒ ์๋๊ฑฐ๊ฐ์๋ฐ.. pctrl์์ ๊ฐ์ ธ์ค๋๊ฑด ๋ณ์ Bdirection๋ฐ์์๊ณ , ๊ทธ๊ฑด ์ค๋ฅธ์ชฝ์ผ๋ก๊ฐ๋ฉด 0 ์ผ์ชฝ 1๋ก ๊ฐ ์ ๋ณํ๋๊ฑฐ ํ์ธ๋๊ณ , public์ผ๋ก ์ ์ธํด์ ์ ์ฐธ์กฐํ๋๋ฐ..
์์ playercontroll pctrl ํด์ ์ฐธ์กฐ์์ผฏ์ด์
์ธ์คํํฐ์์ ์ฐ๊ฒฐํจ? ์ ๊ฑฐ ๋ง๊ณ ๋ ์๋ณด์. ๋ค๋ฅธ๋ฐ์ ์ค๋ฅ๋จ๋
ใดํ์ธํด๋ดค๋๋ฐ. ์ธ์คํํฐ์๋ ์์ pctrlํญ๋ชฉ์ด ์๋น๋๋ค. ๋ฐ๋ก ์ฐ๊ฒฐ๋๋๊ฒ ๋ง์ง ์๋์? ์์ ์ ์ธ๋ถ์ playercontroll pctrl; ์ด๋ ๊ฒ๋ง ์ ์ํด๋๊ณ ๋ฐ์์ ์ ์ฝ๋๋๋ก ์ฌ์ฉํ๊ฑฐ๋ ์. ๋นจ๊ฐ์ค๋ ์๊ตฌ์
pctrl ์คํฌ๋ฆฝํธ๋ ์บ๋ฆญํฐ ์์ง์ด๋๊ณณ์ ํผ๋ธ๋ฆญ ์ธํธ๋ก bdirection ์ ์ํด๋๊ณ ๋ฐฉํฅ์ ๋ฐ๋ผ ๊ฐ๋ฐ๋๋๊ฑฐ ๋๋ฒ๊ทธ๋ก๊ทธ๋ก ํ์ธํ์ด์.
์ ์ธ๋ง ํด๋๊ณ ์ฐธ์กฐ ์ํด๋์ ๊ทธ๋ฐ๊ฑฐ์. public playercontrol pctrl ์ด๋ ๊ฒ public ๋ถ์ธ๋ค์์ ์ธ์คํํฐ์์ ์ฐ๊ฒฐํ๊ฑฐ๋ start()ํจ์์์ ์ฝ๋๋ก ์ฐธ์กฐํด์ค์ผํจ.
์์ฒ๋ผํ๋ฉด ์ผ๋จ ์ฐธ์กฐ๋ ํด๊ฒฐ๋๋๋ฐ ํด๊ฒฐ๋๋๋ผ๋ ๋์ ์ฝ๋๋ฅผ ๋ณด๋ ์ด์์ด ๋ ์๊ฐ๋๋์ค์๋ ํ๋ ์ด์ด์ ๋ฐฉํฅ์ ์ํฅ์ ๋ฐ๊ฒ ๋จ. ๊ทธ๋ฌ๋ ์ด์์ ๋ฐฉํฅ์ instantiate ํ๋ ์์ ์ setํด์ฃผ๊ณ update์์๋ ๋ฐฉํฅ์ฐธ์กฐ๋ฅผ ํ์ง ๋ง์์ผํจ
์? ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ค๊ณ ์ฐธ์กฐ๊ฐ ๋๋๊ฒ ์๋๊ตฐ์
์๋
๋๋ชจํ๋ค
์ฌ์ค ํด๋๋จ
์ฅ? ์คํํธ์์ pctrl = Getcomponent<Playercontroll>(); ํด์ค๋ ์๋ฐ๋ ๊ฑฐ์์์ค..
public์ผ๋ก ํด์ ์ง์ ์ธ์คํํฐ์์ ์คํฌ๋ฆฝํธ ์ฐ๊ฒฐํด์ฃผ๋ ค๊ณ ํ๋ ๊ทธ๊ฒ๋ ์๋๋ ๊ฑฐ์์์ค
Getcomponent๋ ๊ฐ์ ๊ฒ์์ค๋ธ์ ํธ์ ์ปดํฌ๋ํธ๋ฅผ ์ฐพ์๋ ์ฌ์ฉํ๋๊ฑฐ๋ผ ๋น์ฐํ ์๋๊ณ . find ๊ณ์ดํจ์๋ก ํ์ด์ด๋ผํค์ ์๋๊ฑธ ์ฐพ์์ผํ๋๋ฐ ๊ฑ public ํด์ ์ธ์คํํฐ๋ก ์ฐ๊ฒฐํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๊ฒฐํ๋ คํ๋ฉด ์๋๊ณ ์คํฌ๋ฆฝํธ๊ฐ ๋ถ์ ๊ฒ์์ค๋ธ์ ํธ๋ฅผ ์ฐ๊ฒฐํด์ค์ผํจ.
ํ์ด์ด๋ผํค์ ์๋ Player ์ค๋ธ์ ํธ๊ฒ ์ง
์ผ๋จ์ ๋ญ ๋ง๋ค๋ ค๊ณ ํ์ง๋ง๊ณ ํํ ๋ฆฌ์ผ ๋ณด๋ฉด์ ๊ธฐ์ด๋ถํฐ ์ตํ๊ณ ์จ๋
ใด ํ๋ ๊ฐ์ฌํฉ๋๋ค. ์ฐธ์กฐํ๊ณ ์ํ๋๋๊ฑด ์ ๋๋ก ํ์ธ์ด ๋๋๋ฐ ์ด๊ฒ ๊ฐ์๊ธฐ ์ธ์คํด์ค๊ฐ ๋ฌธ์ ๋ค์.. ์ด๊ฑด ๋จธ๋ฆฌ์ข ๋ ์ธ๋งค๋ณด๊ณ ์ค๊ฒ ์ต๋๋ค
ํ๋ ํน์ ๊ณ์ ๊ฐ์? ์๊น ๋ง์ํ์ ์ธ์คํด์ค ๋ถ๋ถ์์ setํด์ฃผ๋ผ๊ณ ํ์๋๋ถ๋ถ์ ์ ์ดํด ๋ชปํ๊ฒ ๋๋ฐ ๋๋ค๋ฅธ ํจ์๋ฅผ ์ฌ์ฉํ๋ผ๋ ์๋ฆฌ์ ๊ฐ์?
์ด๋ค ๋ฌธ์ ๊ฐ? ๋ฐฉํฅ ๋ฌธ์ ? ๊ทธ๋ฆฌ๊ณ ๋ท์์์ ๋ง๊น๋๊ฒ ์์์๋๊ฒ ๋ ธ ๋ฐ๋งํด
์ง๊ธ ํ๋ฐฉ๋ฒ๋๋ก ํ๋๋ฐ ์ฐธ์กฐ์ดํ์ ๋ชจ๋ ๊ฒ์ด ์์ ์๋จ. ์ฐธ์กฐ์ํค๊ณ vector.left๋ก ๋์๊ฐ๊ฒ ํ๋๋ฐ ์ผ์ชฝ์ผ๋ก ์์ฒด๊ฐ ์๋ฐ์if(pctrl.Bdirection == 1) { transform.Translate(Vector2.left * bulletspeed * Time.deltaTime); } else if(pctrl.Bdirection == 0) { transform.Translate(Vector2.right * bulletspeed * Time.deltaTime); } ์ฝ๋๊ฐ ์ด๋ฐ๋ฐ ์์ left๋ ๋์์ ์ํ๋ค์. Bdirection ๋ณ์๊ฐ ์๋ฐ๋๋ ๋ณด๋ ๋๋ฒ๊ทธ๋ก๊ทธ์์ ์ซ์ ์ ๋ฐ๋๊ณ ์
์ ๊ทธ๋ฆฌ๊ณ ์ด๊ฑด ์ด ๋ฌธ์ ํด๊ฒฐํ ๋ค ์ง๋ง.. ์๊น๋งํ ์ด์์ด ๋ ์๊ฐ๋ ๋์ค์๋ ๋ฐฉํฅ์ด ๋ฐ๋๋ค๊ณ ์ธ์คํด์์์ดํธ์์ ๋ฐฉํฅ setํด์ฃผ์๋ผ ํ๋๋ฐ ๊ทธ๊ฑด ์ด๋ค๋ฐฉ๋ฒ์ผ๋ก ํด์ผํ๋๊ฑฐ์์?
์ด์์ ์์ฑํ๋ ์์ ์ ๋ฐฉํฅ์ ๊ณ ์ ํด์ผํ๋ค๋ ๋ง์. ์ ๋ฐ์ดํธ์์ ํ๋ ์ด์ด ๋ฐฉํฅ์ ๊ณ์ ์ฐธ์กฐํ ๊ฒ ์๋๋ผ ์ด์์ Vector2 direction; ์ด๋ฐ๊ฑฐ ๋ง๋ค์ด๋๊ณ instantiateํ๋ ์์ ์ direction์ ์ ํด์ฃผ๋ผ๊ฑฐ
ใด ๊ทธ๊ฑฐ ์ด์ ์ ์ง๊ธ ์ ์ฝ๋๋ ๋ ํํธ๊ฐ ๋์ ์ํ๋ ์ด์ ๋ฅผ ํน์ ๋ฌผ์ด๋ ๋๋์? ๊ฐ์ธ์ ์ผ๋ก ํด๊ฒฐํด๋ณด๊ณ ์ถ์ด์์
์ค๋ฅธ์ชฝ ์ด๋์ผ๋ ์ค๋ฅธ์ชฝ์ด๋ ์ฝ๋๋ง ์คํ๋๋๊น ์ด๋์ ํ๋๋ฐ ์ผ์ชฝ์ด๋์ ์ค๋ฅธ์ชฝ,์ผ์ชฝ ์ฝ๋๊ฐ ๋๋ค ์คํ๋์ ์์๋๋๊ฑฐ๊ฐ์๋ฐ
ใด if else if ์ฌ์ฉ๋ง๊ณ if ๋๊ฐ๋ก ํ๋ผ ์ด์๋ฆฐ๊ฐ์?
switch๋ฌธ์ผ๋ก ๋ฐ๊พธ์์ต๋๋ค. ๊ทผ๋ฐ ๋ถ๋ช pctrl์คํฌ๋ฆฝํธ์์ bdirection์ ๊ฐ์ด ๋ฐฉํฅ์๋ฐ๋ผ ๋ฐ๋๋๋ฐ -> ๋ก๊ทธ๋ก ํ์ธํ์. ๊ทผ๋ฐ ์ ์ฐธ์กฐํ ์ด์ ์คํฌ๋ฆฝํธ์์ ๊ทธ ๋ฐ๋ ๊ฐ์ ๋ชป ๋ถ๋ฌ์ค๋๊ฑด๊ฐ์?
์ง๊ธ ๊ธ์ ์๋ ์ฝ๋๋ BDirection ๊ฐ์ ์๊ด์์ด transform.Translate(Vector2.right * bulletspeed * Time.deltaTime); ์ด ๋ถ๋ถ์ด ์คํ๋๊ณ BDirection์ด 1์ด๋ฉด transform.Translate(Vector2.left * bulletspeed * Time.deltaTime); ์ด๊ฒ ์คํ๋๋ ์ํ๋ค
๊ทธ๋ฅ ๋ ํ๋ก์ ํธ ํ์ผ์ ์ด๋์ ์ฌ๋ ค๋ด๋ผ ์ข ๋ณด์ ใ ใ ใ ใ
ใด ์ผ๋จ ๋ฌธ์ ์์ฒด๋ ํ์ ์ด ๋๋๋ฐ,, ํ๋ค ๊ฐ๊ฐํ๊ฒํด์ ๋ฏธ์ํด ์ฐธ์กฐ๋ฅผ ํ๋๋ฐ ๊ทธ ์ฐธ์กฐํ ์คํฌ๋ฆฝํธ์์๋ ๊ฐ์ด ๋ฐ๋๋๋ฐ ์ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์์๋ ๊ทธ ๋ฐ๋ ๊ฐ์ด ์ ๋๋ก ์๋ถ๋ฌ์์ง๋๊ฑด์ง ๋ชจ๋ฅด๊ฒ ์ด
๋ธ๋ ์ดํฌ ํฌ์ธํธ ์ฐ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋?
ใด๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ ๋ชฐ๋ผ์ ๊ทธ๋ฐ๊ฑฐ ๋ชฐ๋ผ์ ๊ฒ์ํด๋ณด๊ณ ์์์ต๋๋ค...