์๋์ฐจ AI์์ ์ข์ฐ ํ์ ๊ฐ์ ๊ตฌํ๋ ํจ์์ธ๋ฐ
ย ย ย ย Vector3 relative = transform.InverseTransformPoint(checkpointSinglePos);
ย ย ย ย relative /= relative.magnitude;
ย ย ย ย newSteer = (relative.x / relative.magnitude) * 3;
ย ย ย ย newSteer = Mathf.Clamp(newSteer, -1.0f, 1.0f);
์ด๋ ๊ฒ ๊ตฌ์ฑ๋์ด ์์
์ฌ๊ธฐ์ ์๋์ฐจ AI์ steer ๊ฐ์ ๊ตฌํด์ ์๋์ฐจ์ ์ฃผ๋ฉด -1 ~ 1 ์ฌ์ด ๊ฐ์ผ๋ก ์ข์ฐ ํ์ ์ ํ๊ฒ ๋๋๋ฐ
๋,์ธ๋ฒ์งธ ์ค ์ํ์์ด ์ดํด๊ฐ ์๋์ ๊ทธ๋ผ.
์ฒซ๋ฒ์งธ ์ค์ ๋ด๊ฐ ๊ฐ์ผํ ๋ค์ ์์น ์ขํ ๊ฐ์ ธ์ค๋ ๊ฑด๋ฐ
๋์ธ๋ฒ์งธย ์ค์ ๋ฒกํฐ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๊ทธ๊ฑธ๋ก ๋ญ ๊ณ์ฐํ๋๋ฐ
ย ์ย ( ์ขํ๊ฐ / ๋ฒกํฐ์ ํฌ๊ธฐ )ย ๋ฅผ ํ๊ณ
๊ทธ๋ ๊ฒ ๋๋ ๊ฐ์ ๋( x / ๋ฒกํฐ์ํฌ๊ธฐย )
ํ๋์ง ๋ชจ๋ฅด๊ฒ ์.ย ์ ํ๋ธ์์ ๊ฐ์ ธ์จ๊ฑด๋ฐ ์ค๋ช
์ ์์ผ๋๊นย
๊ฑ ์ฝ๋๊ฐ ๋ณ์ ์ธ๊ฑฐ ๊ฐ์๋ฐ? ๋จผ์ relative /= relative.magnitude; ์ด๊ฑด ๊ฑ relative.normalized ๋ก ์ ๋ํจ์ ๊ตฌํ๋๊ฑฐ์๋.
relative๋ฅผ ์ ๋ํจ์๋ก ๋ณ๊ฒฝํ ๋ค์, relative.x/relative.magnitude ์ด๊ฑฐ ํ๋๊ฑด ๊ฒฐ๊ตญ relative.x/1 -> relative.x ์ด๊ฑด๋ฐ ์ด๊ฑธ ์ํ๊ณ ์์?
์ ๋ํจ์๋๋ค, ์ ๋๋ฒกํฐ. ์ฌํผ ๊ฑ ๋ฑ์ ์ฝ๋์. 3์ด ๋ญํ๋ ์ซ์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ?
์ค์ ๋ก ์ฝ๋ ๋ฐ๊ฟ๋ณด๋๊น ๋๊ฐ์ด ์๋ํ๋ค ์ด๋ ๊ฒ ๋ณด๋๊น ์ดํด๊ฐ ๋๋ค, ๋ด ์ฐจ๋ ๊ฐ์ฒด๊ฐ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ด Z๊ณ ์ข์ฐ ์๋ถ๋ถ์ด X์ธ๋ฐ ์ฌ๊ธฐ์ ๋ค์ ์์น์ ๋จ์๋ฒกํฐ์์ x๊ฐ๋ง ๋ฝ์์ steer๊ฐ ๋๋๊ฑฐ๊ตฌ๋ ์ ๋ํฐ์์ ๋ฒกํฐ๊ฐ ๊ฐ์ฒด์ rotation ์ ์ํฅ์ ๋ฐ๋ ์ค ๋ชฐ๋์.
1. ๋ชฉํ์ง์ ์ ํ์ฌ ๋ด ํธ๋์คํผ์ ์ขํ๊ณ์์์ ์ขํ(๋ชฉํ์ง์ ์ผ๋ก์ ๋ฐฉํฅ๋ฒกํฐ) 2. ๋ฐฉํฅ๋ฒกํฐ ์ ๊ทํ 3. relative.magnitude๋ 1์ธ๋ฐ ์ ๋๋๋๊ฑด์ง ๋ชจ๋ฅด๊ฒ ์. 3์ ๊ทธ๋ฅ ๊ฐ์ ๋ฐ์๋ฃ์ ๋ฏ. ๋ณดํต z๊ฐ ์๋ฐฉํฅ์ด๋ x๊ฐ์ด ์ข์ฐ๋ก ์ด๋ํด์ผํ๋ ํฌ๊ธฐ๋ฅผ ์๋ฏธ 4. ๊ณฑํ๊ธฐ 3์ ํด์คฌ์ผ๋ 1์ ๋์ด๊ฐ์ง ์๋๋ก clamp
์์ ๋๊ธ๋ณด๊ณ ์ดํดํ์ ๋ด๊ฐ ๋ณธ ์ ํ๋ธ๊ฐ ๊ต์ก์ฉ์ผ๋ก ์ผ๋ถ๋ฌ ๊ทธ๋ ๊ฒ ์ฝ๋ฉํ๊ฑฐ ์๋๊น ์ถ๋ค. ์์ด ๋ชป์์๋ค์ด์ ์ฝ๋๋ง ๊ฐ์ ธ์จ๊ฑฐ๋ผ
์.. ์ ๋๋ค. ๋จน์ด๋ค~