private IEnumerator TryAttack()
ย ย {
ย ย ย ย while(true)
ย ย ย ย {
ย ย ย ย ย ย //๋ฐ์ฌ์ฒด ์ค๋ธ์ ํธ ์์ฑย
ย ย ย ย ย ย Instantiate(projectilePrefab, transform.position, Quaternion.identity);
ย ย ย ย ย ย ย
ย ย ย ย ย ย // attackRate ์๊ฐ๋งํผ ๋๊ธฐ
ย ย ย ย ย ย yield return new WaitForSeconds(attackRate);
ย ย ย ย }
ย ย }
์คํํธํ์ด์ด๋ง์ด๋ ์คํํ์ด์ด๋ง์ ํธ๋ผ์ด์ดํ์ด๋ผ๋ ์ฝ๋ฃจํดํจ์๋ฅผ ์์/์ ์ง ์ํค๋ ํจ์๋ก ์ฌ์ฉํด์ ๋ฐ์ ์๋ ์ฝ๋๊ฐ ์๋๋ผ๊ตฌ์.
if (Input.GetKeyDown(keyCodeAttack))
ย ย ย ย {
ย ย ย ย ย ย weapon.StartFiring();
ย ย ย ย }
ย ย ย ย else if (Input.GetKeyUp(keyCodeAttack))
ย ย ย ย {
ย ย ย ย ย ย weapon.StopFiring();
ย ย ย ย }
๊ทธ๋ฐ๋ฐ ์ด ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ํค๋ฅผ ๊พน ๋๋ ์ ๋๋ ๋๋ ์ด๊ฐ ์ ์ฉ๋๋๋ฐ ๊ดํดํ๋ฉด ๋๋ ์ด๋ฅผ ๋ฌด์ํ๋๋ผ๊ตฌ์. ์ด๋ป๊ฒ ํด์ผ ํ ๊น์??
์ฝ๋ฃจํด ์ฌ๋ฌ๋ฒ ์คํ๋๋๊ฑฐ ์๋?
public void๋ก ์คํํธ/์คํ ํ์ด์ด๋ง ๋ช ๋ น์ด ๋ง๋ค๊ณ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ํ์ฉํ์ต๋๋ค.
์ฌ๋ฌ ๋ฒ ์คํ๋๋ ๊ฒ ๋ฌด์จ ์๋ฏธ์ธ๊ฐ์??
bool ๊ฐ์ผ๋ก ์ ์ดํ๋ฉด ๋๊ฒ ๋ค
bool isTriggerReady; void Shoot() if(isTriggerReady) Coroutine(); Coroutine(float sec) isTriggerReady = false; yield return new seconds(sec); isTriggerReady = true;
์ด๊ฑธ ๊ทธ๋ฅ ๋ณต๋ถํ๋ฉด ๋๋ ๊ฑด ์๋ ๊ฒ ๊ฐ์๋ฐ ์ด๋ปใฑ ใ ํ์ฉํด์ผ ํ๋ ๊ฑธ๊น์?? ์ฃ์กํฉ๋๋ค. ์ ๊ฐ ์ ๋ํฐ ์๋ด๋น์ ๋๋ค..ใ ใ
์ด๊ฑธ ๋ชป ์์๋จน์ผ๋ฉด ๋ ๋ฒจ ๋์์ธ์ด๋ ๋ชน ai ๋ง๋ค๋๋ ๊ณ์ ์ง๋ฌธํ๋ ๋ฏธ๋๊ฐ ์์๋๋ ์ง๊ธ ๋ง๋๋ ๊ฑฐ ํฌ๊ธฐํ๊ณ ๋ฐฑ์ค์ ๊ฐ์ ๊ธฐ์ด์ค๋ ฅ๋ถํฐ ๊ธฐ๋ฅด๊ณ ์ค์
์ฝ๋ ๋์๊ฐ๋ ๊ณผ์ ์ ๋จธ๋ฆฟ์์ผ๋ก ์๋ฎฌํด๋ณด์ ํน์ ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ๋๋ฒ๊ทธ๋ก๊ทธ ์ฐ์ด๋ณด๋ฉด ๋ ๋ฏ ๊ดํดํ๋ฉด ๊ดํดํ๋ ์๋๋งํผ weapon.StartFiring(); weapon.StopFiring(); weapon.StartFiring(); weapon.StopFiring(); weapon.StartFiring(); weapon.StopFiring(); weapon.StartFiring(); weapon.StopFiring(); weapon.StartFiring(); weapon.StopFiring(); weapon.StartFiring(); weapon.StopFiring(); ์ด๋ ๊ฒ ์คํ๋๋ ์ฝ๋์๋?