void Move()
{
if(!isBorder)
transform.position += moveVec * Speed * (wDown ? 0.1f : 1f) * Time.deltaTime;
void StopToWall
{
Debug.DrawRay(transform.position, transform.forward * 5, Color.green);
isBorder = Physics.Raycast(transform.postiion, transform.forward, 5, LayerMask.GetMask("Wall"));
}
}
void FixedUpdate()
{
StopToWall();
}
๊ฒ์ํ๋ฉด ๋์ค๋ ๋ ์ด์บ์คํธ๋ก ๋ฒฝ ๋ซ๊ธฐ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ
์ด ๋ฐฉ๋ฒ์ ์ฐ๋ฉด ๋ฆฌ์ง๋๋ฐ๋๊ณ ๋ญ๊ณ ๊ทธ๋ฅ ๋ฒฝ ๋ซ๊ณ ์ง๋๊ฐ๊ธฐ ์์ํจ
๋ ์ด์บ์คํธ๊ฐ ์๋ชป๋์๋? ์ถ์ด์ void Move ๋ฐ์
Debug.Log(isBorder); ๋ ํด๋ดค์
๋ฒฝ ์์์ ์บ๋ฆญํฐ๊ฐ "์์ง์ผ ๋" true๋ก ๋ฐ๋๊ณ
๊ฐ๋งํ ๋ฉ์ถ๋ ์๊ฐ false๋ก ๋ฐ๋๊ณ , ํ ํ๋ ์ ์์ง์ด๋ ์๊ฐ ๋ค์ true ๋ก ๋ฐ๋
๊ฒฐ๊ตญ ์๋๊ฐ ๋๋ ค์ง๊ธด ํ์ง๋ง, ๋ฒฝ์ ๋ซ๊ธฐ๋ ๋ซ์...
์ด๊ฑธ ๋ฌดํ๋ฐ๋ณตํด์ ๊ฑ ์บ๋ฆญํฐ๊ฐ ๋ฒฝ ๋ซ๊ณ ์ง๋๊ฐ๋๋ฐ, ์ด๊ฑฐ ์ด์ผ ๊ณ ์นจ...?
๋ฒฝ๋ซ๋๊ฒ ์ซ์ผ๋ฉด ๊ทธ๋ฅ rigid.MoveToward ์ฐ์ - dc App
์ด๋๋ก ํ ๋ฐฉ๋ฒ์ ์์๊น?
ํฌ์ง์ ๋ฃ๋๊ฒ =๋ += ์๊ฐ์ด๋์ด๋ผ ์๋๊ฐ ์ด๋ป๋ ๋ซ๋ ค์ ๋ฆฌ์ง๋๋ฐ๋ velocity๋ movetoward ์ฐ๋๊ฒ์ข์์ - dc App
์์ง์ด๋๊ฑธ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ ์์ง์์ผ๋ก ๋ฐ๊พธ๋๊ฐ ์๋๋ฉด Raycast์ ์์ ์ง์ ์ ์บ๋ฆญํฐ๊ฐ ๊ฐ๋ ๋ฐฉํฅ๋ณด๋ค ์ข ๋ค์์ ์์ํ๊ฒ ํ๋ ์ ๋ฐ์ ์์๋ฏ ๊ทผ๋ฐ ๋ฌผ๋ฆฌ์์ง ์ฌ์ฉํ ๊ฑฐ๋ฉด ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ์์ง์ฌ์ผ ํ๋๊ฒ ๋ง๊ธด ํด
์ ๋ฐฉ์๋๋ก๋ฉด fixed์ stop์ด๋ move ์์๋ง ๋ง์ถฐ ๋ฃ์ด๋ ๋ซ๋ฆด์ผ์ ์์๊ฑธ. ๊ทธ๋ฆฌ๊ณ ์ด์ฐจํผ ์ถฉ๋์ฒด ๋ค์ด๊ฐ์ผ๋ฉด ๊ทธ๋ฅ rigibody๋ก ์ถฉ๋ ๊ณ์ฐํ๋๊ฒ ์ฐจ๋ผ๋ฆฌ ๋์ - dc App
์๊ฐํด๋ณด๋ ์์ ๋ฐ๋์ด๋ ๋ฉ์ถฐ์๋ ์ง์ ์ ๊ฒน์น๋ ๊ฒฝ์ฐ ์๊ธฐ๋ฉด ๋ซ๋ฆด๊ฒ ๊ฐ๊ธด ํ๋ค. ์ผ๋จ ์์์ move๊ฐ ์ด๋จ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง raycast๋ก ๊ฐ์งํ๊ณ ์ถ์ผ๋ฉด fixed์์ move๋ฅผ ์คํํ๊ธฐ ์ ์ ๋ฒฝ์ด ์๋์ง ์๋์ง ์ฒดํฌํ๋๋ก ํด์ผํจ. - dc App