์ฐ์ ๋ด๊ฐ ๊ตฌํ ํ๋ ค๊ณ ์ํ๋๊ฒ์ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฅ ์บ๋ฆญํฐ๊ฐ ๊น๋นก๊ฑฐ๋ฆฌ๋๊ฑฐ์ผ. ์ ์๊ฒ ๋ง์๋ค๋์ง ํน์ ํ์์ ์ ํ๋ค๋์ง ํ์๋๋ฅผ ์ํด์
๊ทธ๋์ย
public void PowerUp()
ย ย {
ย ย ย ย if(gauge >= 100)
ย ย ย ย {
ย ย ย ย ย ย StartCoroutine(BlinkCharacterer());
ย ย ย ย }
ย ย }
IEnumerator BlinkCharacterer()
ย ย {
ย ย ย ย gauge -= 10;
ย ย ย ย gameObject.GetComponent<SpriteRenderer>().color = new Color(0.78f, 0.78f, 0.78f, 1);
ย ย ย ย yield return new WaitForSeconds(0.5f);
ย ย ย ย gameObject.GetComponent<SpriteRenderer>().color = new Color(1, 1, 1, 1);
ย ย ย ย yield return new WaitForSeconds(0.5f);
ย ย ย ย StartCoroutine(BlinkCharacterer());
ย ย }
ย void OnTriggerEnter2D(Collider2D collider)
ย ย {
ย ย ย ย if (collider.tag.Equals("Enemy"))
ย ย ย ย {
ย ย ย ย ย ย StartCoroutine(BlinkCharacterer());
ย ย ย ย }
}
์ด๋ ๊ฒ ๊ตฌํํ๋๋ฐ ์์ ํ์์ ์์๋ ๊น๋นก๊ฑฐ๋ฆฌ๋๋ฐ ๋ฐ์ ์ ์๊ฒ ๋ง์์๋์๋ ๊น๋นก ์๊ฑฐ๋ฆฌ๋ค? ์๊ทธ๋ฐ๊ฑธ๊น?
์ ์ฝ๋ฃจํด์ ํ๋ฒ ์คํ๋๋ฉด ์์ํ ์ฌ๊ท๋ก ์๋๋๋๊ฑฐ๋?
๊ทธ๋ฆฌ๊ณ ๋๋ฒ๋ง์ผ๋ฉด ์ฝ๋ฃจํด ๋๋ฒ์คํ๋๋๋ฐ ๊น๋นก๊ฑฐ๋ฆฌ๋๊ฒ ๋ง์์๋ก ๋ฏธ์น๋ฏ์ด ๊น๋นก๊ฑฐ๋ฆดํ ๋ฐ ์๋๋๊ฑฐ๋
๊ธฐ๋ณธ์ ์ผ๋ก "์ฌ๊ธฐ ์ฝ๋๊ฐ ์ ์คํ์ด ์๋์ง?" ๋ผ๋ ์๊ฐ์ด ๋ค๋ฉด ๋ธ๋ ์ดํฌ ํฌ์ธํธ๊ฑธ๊ณ ๋๋ฒ๊น ์ํด๋ณด์
์๋ ์ค๋จ ๋๋ ๋ถ๋ถ ๋ค ์์ ๊ทธ๋ฆฌ๊ณ ์ ๊ธฐ ๋งจ๋ฐ์ ์ฝ๋ผ์ด๋์ ๋ก๊ทธ๋ก ์ฐ์ด๋ดค์๋ ์ ๊ธฐ ์์ ๋ค์ด์ด ๊ทธ๋ฅ ์ฝ๋ฃจํด๋ง ์คํ์ด์๋์
์๋ง ์ฝ๋ฃจํด ์คํ๋์๋ง์ ์ค๋จ์์ผ๋ฒ๋ฆฌ๊ฑฐ๋ ๊ณ์ ์ปฌ๋ฌ๊ฐ์ 1๋ก ๋ค์ ๊ณ ์ ์ํค๊ณ ์๊ฒ ์ง ์ปฌ๋ผ์ด๋ ๋ก๊ทธ์ ์ค๋จ ๋ก๊ทธ๋ฅผ ์ฐ์ด์ ์คํ ํ ์ผ๋ง๋ ๋นจ๋ฆฌ ์ค๋จ์ํค๋์ง ๋ด๋ผ
์ํ ์ฐ์ ์ ๋ ๊ฒ ๊ตฌํํ์๋์๋ ๋ฑํ ์ฝ๋์ ๋ฌธ์ ๊ฐ ์๋๊ฑด ์๋์ง? ๋ ํน์ ์ ๊ธฐ์ ๊ตฌํ์์ฒด๊ฐ ๋ญ ์๋ชป๋ ๋ถ๋ถ์ด ์๋ ์์๋ผ๋์ง ๊ทธ๋์ ์ฌ๋ ค๋ดค๋๋ฐ ํ๋ฒ ๋ก๊ทธ์ฐ์ด๋ณด๋ฉด์ ์์งํด๋ณผ๊ฒ ๋ต๋ณ ๊ฐ์ฌ
๊ทผ๋ฐ ์ฝ๋ฃจํด ์ค์ง๋ StopAllCoroutine์ผ๋ก ์ํค๋ ๊ฑฐ์? ์ ๋ ๊ฒ ์ฐ์ง ๋ง๊ณ StartCoroutine("Blink...") ์ด๋ ๊ฒ ํ๊ฑฐ๋ Coroutine c; ๋๋ IEnumerator c; ์ด๋ฐ ์์ผ๋ก ๋จผ์ ์ ์ธํ ํ์ ๊ฑฐ๊ธฐ๋ค ๋ฉ์๋๋ฅผ ๋์ ํด์ ๊ทธ๊ฑธ๋ก StartCoroutine(c) StopCoroutine(c)์ด๋ฐ์์ผ๋ก ์จ๋ด๋ผ
์ 3๊ฐ์ง๊ฐ ๊ฐ๊ฐ ์ค๋ณต ์คํ์์ stop์ ํจ๊ณผ๊ฐ ๋ค๋ฆ ๊ทธ๋ฌ๋ ์์ ๋ง๋ค์ด์ ์ถฉ๋ถํ ํ ์คํธ๋ ํด๋ณด๊ณ ... ๊ทธ๋ฆฌ๊ณ ์ฝ๋ฃจํด์ ํ๋ฒ์ ํ๋๋ง ์คํ๋๊ฒ ์ ๊ด๋ฆฌํด์ผ ๋๋๊น bool isRunning ๊ฐ์๊ฑธ๋ก ์คํ์์ผฐ๋์ง, ์ข ๋ฃ๋์๋์ง ๊ฐ์๊ฑธ ๊ผผ๊ผผํ๊ฒ ์ฒดํฌํ ํ์๊ฐ ์์