3d๋ผ collider ๊ณ์ ์ผ๋๋ฉด ๊ณต๊ฒฉ๋ชจ์ ์ ํ์ง ์์๋ collider์ ๋ฟ์ด๋ฉด ์ฒ๋ง์์
coroutine์ ์ด์ฉํด์ ๊ป๋ค ์ผฐ๋ค ํด๋๋๋ฐ
๋ฒ์๋ isrange๋ก ํด๋จ๊ณ
๊ทผ๋ฐ isrange์ผ ๋ attack๋ชจ์
์ ๋ฐ๋ณตํ๋๋ฐ coroutine์ ํ๋ฒ๋ฐ์ ์คํ์ ์ํ๋๋ผ๊ณ
isrange์ผ ๋ coroutine๋ ๊ณ์ ๋ฐ๋ณต์ ํ์ผ๋ฉด ์ข๊ฒ ๋๋ฐ ์ด๋ป๊ฒ ํด์ผํ ๊น while์ด๋ do while์ฐ๋๊น ์คํ์ด ์๋๋๋ผ๊ณ ใ
์ฝ๋๋ ๊ฐ๋จํ๊ฒ
if (isRange) //isrange์ผ ๋
{
animator.SetBool("isRun", false); //๋ฌ๋ฆฌ๋๊ฑฐ ๋ฉ์ถ๊ณ
agent.speed = 0;
StartCoroutine(ChangeSpeedAfterDelay(2.5f)); //๊ณต๊ฒฉ coroutine
}
//๊ณต๊ฒฉ coroutine
IEnumerator ChangeSpeedAfterDelay(float newSpeed)
{
agent.speed = 0;
animator.SetBool("Attack", true); //๊ณต๊ฒฉ ์ ๋์ด์
yield return new WaitForSeconds(0.5f);
handCollider.enabled = true; //enemy collider
animator.SetBool("Attack", false);
yield return new WaitForSeconds(0.5f);
handCollider.enabled = false;
yield return new WaitForSeconds(1f);
agent.speed = newSpeed;
}
๊ฐ๋จํ๊ฒ๋ ์ฝ๋ฃจํด ๋งจ ๋ง์ง๋ง์ if๋ฌธ ์ ๋ถ ๋ณต๋ถํ์
์๋๋๋ฏ
isRange = true๊ณ ์ฝ๋ฃจํด์ด ์คํ์ค์ผ๋ ์์ชฝ if๋ฌธ ์คํ ์๋๊ฒ ์กฐ์นํด๋์๊ฑฐ ๋ง์ง?
else๋ฌธ๋ ์์ด์ ํ๋ค๋ฏ
๊ทธ๊ฑฐ ๊ณ ๋ คํด์ ์ฝ๋๊ตฌ์กฐ ๋ค์ ์ง์ผํ ๋ฏ
์ํด