๋๋๋๋
์ ๊ฐ ์ ๋ชฌ์คํฐ๋ฅผ ์คํฌ๋ฆฝํธ๋ก MoveTowards๋ก ์ด๋์ํค๊ณ ์๋๋ฐ์ผ
MoveTowards๋ก ์ด๋์ํค๊ณ , ๊ทธ ๋ชฉํ๋ก ์ด๋์ํค๋ฉด ๋ช ์ด๋์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ชฉํ ์ฌ์ค์ ํ๊ณ ๋ค์ ์ด๋์์ผ์ผ
void FixedUpdate()
ย ย {
ย ย ย ย //๋๋คํ๊ฒ ์ค์ ํ moveSpot์ผ๋ก ํจํธ๋กค
ย ย ย ย transform.position = Vector2.MoveTowards(transform.position, randomPos, patrolSpeed * Time.deltaTime);
ย ย ย ย //moveSpot๊ณผ ํจํธ๋กคํ๋ ์ ์ ๊ฑฐ๋ฆฌ๊ฐ ์ข์์ง๋ฉด ๋ค์ ์ด๋ ๋ชฉํ๋ฅผ ์ค์ ํจ
ย ย ย ย if (Vector2.Distance(transform.position, randomPos)
ย ย ย ย {
ย ย ย ย ย ย if (waitTime <= 0)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย minX = transform.position.x - 7;
ย ย ย ย ย ย ย ย maxX = transform.position.x + 7;
ย ย ย ย ย ย ย ย minY = transform.position.y - 7;
ย ย ย ย ย ย ย ย maxY = transform.position.y + 7;
ย ย ย ย ย ย ย ย randomPos = new Vector2(Random.Range(minX, maxX), Random.Range(minY, maxY));
ย ย ย ย ย ย ย ย waitTime = startWaitTime;
ย ย ย ย ย ย }
ย ย ย ย ย ย else
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย waitTime -= Time.deltaTime;
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
์ด๋ ๊ฒ ํ๊ณ ์๋๋ฐ, ์๊ฐ ์ด๋์ค์๋ ๊ณต๊ฒฉ์ ์ํ๊ณ , ์ด๋์ด ๋๋๋ฉด ๊ทธ ์๋ฆฌ์ ๋ฉ์ถฐ์ ์๊ฑฐ๋ฆฌ ๊ณต๊ฒฉ์ ํ๊ฒ ํ๊ณ ์ถ์ด์ฌ
๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด ์๊ฐ ์ด๋ ์ค์ธ์ง ์๋์ง๋ฅผ ์ฒดํฌํ ์ ์์ด์ผ ํ ๊ฒ ๊ฐ์๋ฐ ๊ทธ๋ฐ ๊ฑด ์ด๋ป๊ฒ ํ๋์ฌ?
์ถ๊ฐ๋ก, ์ด๊ฑด ์ง๊ธ ์ ๊ฐ ํผ์ ํด๊ฒฐํด๋ณด๋ ค ๋ ธ๋ ฅํ๊ณ ์๊ธด ํ๋ฐ, ๋ฉฐ์น ์งธ ๋ชจ๋ฅด๊ฒ ์ด์์
ํ๋ ์ด์ด๊ฐ ๊ฐ๊น์ด ๋ค๊ฐ์ค๋ฉด ํ๋ ์ด์ดํํ ์ ๋ฉ์ด์ง๊ฒ ํ๊ณ ์ถ์๋ฐ(์๊ฑฐ๋ฆฌ ๋ชน์ด๋ผ์ ๋๋ง๊ฐ๋ ๊ฐ๋ ์ด์ก)
์ธ์ํ๋ ๊ฑด ์๋ง overlapcircle๋ก ํ๋ฉด ๋ ๊ฒ๊ฐ์๋ฐ, ๋ฐฉํฅ์ ์ด๋ป๊ฒ ์ง์ ํด์ผ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ฝ
ํ๋ ์ด์ด๊ฐ ๋ค๊ฐ์ค๋ ๊ทธ ๋ฐฉํฅ์ ๋ฐ์์ฌ ์ ์๋ ํจ์๊ฐ์ ๊ฒ ์๋์ผ??
๊ทธ๋ผ ๋ฏธ๋ฆฌ ๊ฐ์ฌํฉ๋๋น
์ค์ ํ ๋์ฐฉ์ง์์ Distance๋ฅผ ์ฌ๋ฉด ๋์ง
์ค ํ๋ฒ ํด๋ณผ๊ฒ์ผ ๊ฐ์ฌํฉ๋๋น
์ค ๋๋ค! fixedupdate์๋ค ํ ๋ฒ์ ๋ชฐ์๋ฃ์๋๋ฐ ๊ทธ๋๋ ๋ณ ๋ฌธ์ ์๋๊ฑฐ๊ฒ์ฃ ?
ํ๋ทฐ๋ผ 360๋ ์ฒดํฌํด์ผ ํ๋ฉด ์ํฌํ์ ํธ ์ฐธ๊ณ ํ๋ฉด ๋ ๊ฑฐ์ ... ์๋๋? ์ผ๊ฐํจ์ ์์ฉํด๋ฐ
๊ทธ๋๊น ์ผ์ ๊ฐ๋๋ฒ์์์ ๋ค๋ฉด ๋๋ง๊ฐ์ผ๋๋ค๋๊ฑฐ์ง?
๋ชฌ์คํฐ์ forward๋ ๋ชฌ์คํฐ๊ฐ ํ๋ ์ด์ด๋ฅผ ๋ณด๋๋ฐฉํฅ๋ฒกํฐ๋ฅผ ๊ตฌํด์ ๋ด์ ํ๋ฉด cos@๊ฐ ๋์.
acos ํด๋ ๋์ง๋ง ๊ทธ๋ฅ cos@ ์ง์ ์์๋ก์ง์ ํด์ ๋ฒ์์ฒดํฌํ๋ฉด๋จ
๊ฐ์ฌํฉ๋๋ค ์ฌ๋ฌ๋ถ! ๋จธ๋ฆฌ ๊ฐ์ํ๋ค ์ํ ๊ณต๋ถ์ข ํด๋๊ฑธ ์ผ๋จ ๊ฒ์ํด์ ํด๋ด์ผ๊ฒ ๋น