์ง๊ธย ๋ฐ๋ฅ์ฅํ๊ฐ์ ๋๋๋๊ฐ์๊ฑฐ ๊ตฌํ์ค์ธ๋ฐ
์ฒ์์๋ ๊ทธ๋ฅ ์ฝ๋ผ์ด๋ ๋ฌ์๋๊ณ istriggerstay๋ก ์๊ฐ ์ฒดํฌํด์ ์ ๊ทผํ ๋ชฌ์คํฐํํ
๋ํ๋ ๋ฐฉ์์ผ๋ก ๋ง๋ค์๋๋ฐย
์ด๊ฒ ๊ฐ์ ์ฅํ๋ด์์ 2๊ฐ์ด์ ์ ์ด๋ค์ด์ค๋๊น ํ๊ฐ๋ง ์ฒดํฌ๋๋๋ผ๊ณ
๋ฐฉ๋ฒ์ด ๋ญ๊ฐ ์์๊น์ถ์ด์ ํ๋๋ฐ ๊ทธ๋ฅย istriggerstay์ ์ ๊ทผํ๊ฑฐ ๋ฆฌ์คํธ์ ๋ฃ๊ณ ์ฝ๋ฃจํด๊ฐ์๊ฑธ๋ก 0.1์ด๋ง๋ค ๋ฆฌ์คํธ์์๋๋ฐ ๋ํ๋๊ฐ
์ํ์ผ๋กย raycasthit๋ก ์ ๋ง ๊ฒ์ํด์ ์ด๊ฒ๋ ์ฝ๋ฃจํด์ผ๋ก ํ ๊น ๊ณ ๋ฏผ์ค์ธ๋ฐ
istrigger๋ย raycasthit๋ ๋ญ๊ฐ๋ ๋ถํ๊ฐ ์ ์๊น??ย
ontriggerstay์์ ์ค๋ธ์ ํธ ํ๊ฐ๋ง ์ฒดํฌ๋ ๋ฆฌ๊ฐ ์๋๋ฐ... ๋ฆฌ์ง๋๋ฐ๋ ์ฌ๋ฆฝ๋ชจ๋๋ ์กฐ์ ํด๋ณด๊ณ stay์ ๋ก๊ทธ๋ ์ถ๋ ฅํด๋ณด์
private void OnTriggerStay2D(Collider2D collision) { if (collision.CompareTag("enemy")) { if (currentDamageTime <= 0) { Enemy enemy = collision.GetComponent(); enemy.OnDamage((int)damage); currentDamageTime = damageTime; } } } ์ด๋ฐ์์ผ๋ก ํ๊ณ update์์ ์๊ฐ ๋๊ธฐ๊ณ ์๋๋ฐ ํ๊ฐ์ฉ๋ง ์ฒ๋ฆฌ๋์ ๋ญ์ผ๊น์ถ์
currentDamageTime์ ์ด๋์ ๊ฐ์ ธ์ค๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ ๊ทธ๋ฅ ๋ณ์ ํ๊ฐ๋ก ํต์ ํ๋๊ฑฐ๋ฉด ๋น์ฐํ๊ฒฐ๊ณผ ์๋? ์กฐ๊ฑด์ด 0๋ณด๋ค ์์๋์ธ๊ฑฐ ๋ณด๋๊น ์ด๋๊ฐ์์ ๊ณ์ ๋ธํํ์๊ฐ์ง๊ณ ๋นผ์ฃผ๋๊ฑฐ ๊ฐ์๋ฐ ๊ทธ๋ฌ๋ฉด 0์ดํ๋ก ๋จ์ด์ง๋ ์๊ฐ ๊ฐ์ฅ ์ฒ์์ ํธ์ถ๋ enemy๊ฐ์ฒด์ ๋ฐ๋ฏธ์ง ์ ๋ฌํ ์ดํ์ currentDamageTime์ด damageTime์ผ๋ก ์ด๊ธฐํ ๋์์. ๊ทธ๋ผ ๋ฐ๋ก ๋ค์์ ๊ฒ์ถ๋๋ enemy๊ฐ์ฒด๋ if๋ฌธ ํต๊ณผ ๋ชปํ ๊ฑฐ๊ณ .
๊ทธ๋ ๊ฒ ํ์ง๋ง๊ณ ontriggerenter ํ์๋ ๋ฆฌ์คํธ์ ์ค๋ธ์ ํธ ์ถ๊ฐํ๊ณ ontriggerexit ํ์๋ ๋ฆฌ์คํธ์์ ์ค๋ธ์ ํธ ๋นผ์ฃผ์ . ๊ทธ๋ฆฌ๊ณ ๋ณ๋ ์ฝ๋ฃจํด์์ currentDamageTime 0 ์ดํ๋ก ๋จ์ด์ง๋ ์๊ฐ ๋ฆฌ์คํธ์ ์๋ ๊ฐ์ฒด๋คํํ foreach๋ฅผ ํ๋ ์ด๋ฒคํธ๋ฅผ ๋ ๋ฆฌ๋ ๋ฐ๋ฏธ์ง ์ ๋ฌํ๊ณ . ๋ exit๊ฐ ์ ๋๋ก ๋ฐ๋ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ญ๊ฐ ์๋์ง ํ์ธํ๊ณ ๋ฆฌ์คํธ์์ ์ ๊ฑฐํด์ฃผ๋ฉด ๋ ๋ฏ?