void FixedUpdate()
ย ย {
ย ย ย ย if (!isLive || anim.GetCurrentAnimatorStateInfo(0).IsName("Hurt") || entStop) return;
ย ย ย ย Vector2 dirVec = target.position - rigid.position;
ย ย ย ย Vector2 nextVec = dirVec.normalized * speed * Time.fixedDeltaTime;
ย ย ย ย rigid.MovePosition(rigid.position + nextVec);
ย ย ย ย rigid.velocity = Vector2.zero;
ย ย }
์ด ์ฝ๋์์ entStop์ด ์ฐธ์ด ๋๋ฉด ์ด๋ํ๋ ๊ฒ ๋ฉ์ถฐ์ผ ํ๋๋ฐ ์ ๋ฉ์ถ๋ค๊ฐ๋ ๊ฐํน ์ด๋์ด ์๋ฉ์ถ๊ณ ๊ณ์ํด์ rigid.position์ด ์ฆ๊ฐํจ..
๋๋ฒ๊น ํด์ ํ์ธํ๋ฉด entStop ์ฐธ ๋ ๋ FixedUpdate ์ ์ชฝ ์ฝ๋ ์๋์ํ๋๊ฑด ๋ง์์ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ค ํฌํ!!
ํ์ฌ ์ฝ๋์์ entStop์ด ๋๋ฉด ์๋์ชฝ ์ฝ๋๋ก ๋ด๋ ค๊ฐ์ง ์๊ณ ๊ทธ๋ฅ return ์ผ๋ก ๋น ์ ธ๋๊ฐ์์
๊ทธ๋ ๊ฒ ๋๋ฉด velocity๋ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ค์ ๋ ๊ฐ์ด ๋จ์์ ์์ง์ด๋ ๊ฑฐ๊ณ ..
์ฅ ๋ง์ง๋ง์ velocity๋ 0์ผ๋ก ์ค์ ์ ๊ณ์ ํด์ฃผ๊ณ ์๋๋ฐ? ๊ทธ๋ฆฌ๊ณ ์ด์ฐจํผ moveposition์ด๋ velocity๋ ๋ณ๊ฐ ์๋? ์ผ๋ถ๋ฌ moveposition์ ์ํฅ ๋ผ์น์ง ๋ง๋ผ๊ณ velocity๋ฅผ 0์ผ๋ก ํด์ค๊ฑด๋ฐ
์ ๋ด๊ฐ ์ฐฉ๊ฐํ๊ตฌ๋ ๋ญ์ง ์ดํดํ์ rigid.velocity ๊ฐ์ ๋ก๊ทธ๋ก ์ฐ์ด๋ดค์? entStop์ดํ์ ์ด๋์ ๊ฐ ์ธ๋ถ ์ํฅ์ ๋ฐ์์ ์์ง์ด๊ณ ์๋๊ฒ ์๋๊น? entStop ์ํค๋ ์๊ฐ rigid.Sleep();๋ก ์ ์ง์ํจ ๋ค์ ์ด๋ ์๊ฐ์ ๋ค์ isSleeping์ด false๊ฐ ๋๋์ง ํ์ธํด๋ณด๋ฉด ๋ ๊ฒ๋ ๊ฐ์๋ฐ..
์ค rigid.Sleep ์ด๋ผ๋๊ฒ ์๋์ง ๋ชฐ๋๋ค ใ ใ ๋๋ถ์ ํด๊ฒฐํจ! ๊ทธ๋ฅ ์ ํจ์ ๋ฃ์ด์ฃผ๋๊น ๋๋ค ๊ตฟ๊ตฟ