public class playermove : MonoBehaviour
{
ย ย public float Speed = 3f;
ย ย Rigidbody2D rigid;
ย ย public int hnextMove;
ย ย public int vnextMove;
ย ย float h;
ย ย float v;
ย ย bool isHorizonMove;
ย ย void Awake()
ย ย {
ย ย ย ย rigid = GetComponent<Rigidbody2D>();
ย ย ย ย Think1();
ย ย ย ย Think2();
ย ย ย ย Invoke("Think1", 5);
ย ย ย ย Invoke("Think2", 5);
ย ย ย ย //Invoke๊ฐ Think๋ผ๋ ํจ์๋ฅผ 5์ด ๋ง๋ค ํธ์ถ์ ํ๋ค.
ย ย }
ย ย private void Update()
ย ย {
ย ย ย ย hnextMove = (int)Input.GetAxisRaw("Horizontal");
ย ย ย ย vnextMove = (int)Input.GetAxisRaw("Vertical");
ย ย ย
ย ย }
ย ย
ย ย //์ฌ๊ทํจ์
ย ย void Think1()
ย ย {
ย ย ย ย hnextMove = Random.Range(-1, 2);
ย ย ย ย
ย ย ย ย float nextThinkTime = Random.Range(2f, 5f);
ย ย ย ย Invoke("Think1", nextThinkTime);
ย ย ย
ย ย }
ย ย void Think2()
ย ย {
ย ย ย ย vnextMove = Random.Range(-1, 2);
ย ย ย ย ย
ย ย ย ย float nextThinkTime = Random.Range(2f, 5f);
ย ย ย ย Invoke("Think2", nextThinkTime);
ย ย }
ย ย void FixedUpdate()
ย ย {
ย ย ย ย rigid.velocity = new Vector2(hnextMove, h);
ย ย ย ย rigid.velocity = new Vector2(vnextMove, v);
ย ย ย ย if (isHorizonMove)
ย ย ย ย {
ย ย ย ย ย ย Think1();
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย isHorizonMove = true;
ย ย ย ย ย ย ย ย h = Input.GetAxisRaw("Horizontal");
ย ย ย ย ย ย ย ย hnextMove = Random.Range(-1, 2);
ย ย ย ย ย ย ย ย float nextThinkTime = Random.Range(5f, 10f);
ย ย ย ย ย ย ย ย Invoke("Think1", nextThinkTime);
ย ย ย ย ย ย }
ย ย ย ย }
ย ย ย ย else if (isHorizonMove)
ย ย ย ย {
ย ย ย ย ย ย Think2();
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย isHorizonMove = false;
ย ย ย ย ย ย ย ย v = Input.GetAxisRaw("Vertical");
ย ย ย ย ย ย ย ย vnextMove = Random.Range(-1, 2);
ย ย ย ย ย ย ย ย float nextThinkTime = Random.Range(5f, 10f);
ย ย ย ย ย ย ย ย Invoke("Think2", nextThinkTime);
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
}
์ฝ๋ฉ ์ด๋ณด๋ผ์ ์์ ๋ณด๋ฉด์ ๋ฐ๋ผํ๋๋ฐ ๋ณด๋ฉด์ ๋ฐ๋ผํ ์์์ ์ข์ฐ๋ก๋ง ์์ง์ด๋๊ฑฐ์ฌ์ย
AI ์บ๋ฆญํฐ๊ฐ ์ํ๊น์ง ์์ง์ด๋๊ฑธ ์ํด์ ์ด๊ฒ์ ๊ฒ ๊ฒ์ํ๋ฉด์ย ์ฝ๋ฉ์ ํด๋ดค๋๋ฐ ์ค๋ฅ๋ ์๋๋ฐ ์์ง์์ด ์์ ์์ด์์.ย
ํ๋ทฐ ํ์์ผ๋ก 2D์ ๋๋ค.
fiexedUpdate ์ if(rigid.velocity.x!=0)isHorizonMove=true; ๋ฅผ ์ถ๊ฐํด์ผ๋ ๊ฒ ๊ฐ๋ค์
์๋ ค์ฃผ์ ๋๋ก fiexedUpdate ์ if(rigid.velocity.x!=0)isHorizonMove=true; ๋ฅผ ์ถ๊ฐํด๋ดค์ต๋๋ค. ์ ์๋ฆฌ์์ ์์ง์ด๊ธฐ๋ง ํ๋ฉด์ ์๋ฌด๋ฐ ๋ฐ์์ด ์์ต๋๋ค. ์ค๋ฅ๋ ์๋๋ฐ ํน์ ๋ค๋ฅธ๋ฐฉ๋ฒ ์๊ณ ์์ผ์ ๊ฒ ์์๊น์?
update์์ ๋ด์ฉ์ ๋ค ์ง์๋ณด์ธ์. ๋ ํ๋ฅ ์ด ๋์ต๋๋ค
๋ค!!! ์ด์ ์์ง์ ๋๋ค!! ๊ฐ์ฌํฉ๋๋ค!! ๊ทผ๋ฐ ์ฌ์ ํ ์ ์๋๋ก๋ ์์ง์์ด ์์ต๋๋ค.. ์กฐ๊ธ ๋ ์๋ ค์ฃผ์ค ์ ์์ผ์ค๊น์?
๋ค ์ฌ์ฌํด์ ๋ ์๋ ค๋๋ฆด์ ์๊ธดํ๋ฐ ์ ๊ธ ๋ด์ฉ๋ง๋ด์๋ ai๊ฐ ์ด๋ป๊ฒ ์์ง์ด๋์ง์ ๋ํ ์ง๋ฌธ์๋์ ์๊ฐ์ ํ์ ํ ์๊ฐ ์๋ค์
๊ฐ์ฌํฉ๋๋ค!!!์๋๋ ์นด์ด๋ก ์ํํธ์ ๋์ค๋ ์ฌ๋๋ค์ฒ๋ผ AI๋ฅผ ๊ฐ๊ณ ์์ฐ์ค๋ ์์ง์ด๋๊ฑธ ์ํด์ ์๊ฐํด๋ณด๋ค๊ฐ ์ด์ง ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๋ฅผ ํ๋๊ฑด ์ด๋ ค์ธ๊บผ ๊ฐ์์ ์์ ๋กญ๊ฒ ์์ง์ด๊ธฐ๋ง ํ๋ AI๋ฅผ ๋ง๋ค์ด๋ณด๋ ค๊ณ ์ฐพ์๋ณด๋ฉด์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ณด๊ณ ๋ฐ๋ผํ์ต๋๋ค! ๊ฐ์๋ ํก์คํฌ๋กค์์ ์์ ๋กญ๊ฒ ์์ง์ด๋ AI ์๊ณ ์ ๋ ํ๋ทฐ์์ ์์ ๋กญ๊ฒ ์์ง์ด๋๊ฑธ ์ํด์ ์ํ๋ก ์์ง์ด๋ ์ฝ๋ฉ์ ์๊ฐํด์ ๋ฃ์ด๋ณธ๊ฑด๋ฐ ์คํจํ์ต๋๋ค.. ์ด๋ฐ์์ผ๋ก ์ ๊ฐ ์ํ๋ AI๋ฅผ ์๋ ค๋๋ฆฌ๋ฉด ๋ ๊น์?
๋ค ๊ทผ๋ฐ ๋จ์ํ ai๋ง ์์ง์ผ๊ฑฐ๋ฉด input.getaxisraw ๊ฐ ํ์์์๊ฑฐ ๊ฐ์๋ฐ ์ถ๊ฐํ์ ์ด์ ๊ฐ ์๋์?
์ฒ์์ ์ํ์ข์ฐ ์์ง์์ ๋ฐฐ์ธ๋ input.getaxisraw ์ฝ๋๋ฅผ ๋ฃ์ด์ ๋ฐฐ์์ ํ์ํ ๊บผ๋ผ๊ณ ์๊ฐํ์ต๋๋ค!
์์ ๋ค ์ง์ฐ์๋ผ๋ ์ด์ผ๊ธฐ๋๋ก ๋ชฝ๋ ๋ค ์ง์๋ฒ๋ฆฌ๊ณ ์์ฑํด์ฃผ์ ๋๋ก void ๋ค์ ์ฐ๊ฒฐํด์ ๋ฌ์๋๋ฐ ์ด ๋จ์ด๋ค์ด ๋ถ๊ฒ ์ค๋ฅ๊ฐ ๋จ๋๋ฐ ์ ๊ฐ ์ ์ธ์ธ๊ฐ์? ์ ์๋ฅผ ํด์ค์ผ ํ๋์? (startCorutine random ienumerator trasform vector3 waitforsecond)
์ด ์ฌ๊ธฐ ์ฝ๋ฉ์ด ์์ฌ๋ผ๊ฐ ์ง๋ค์ฌ ๋ฉ์ผ์ฃผ์ ใ ์น์๋ฉด ๋ณด๋ด๋๋ฆผ
์ด ๋๊ธ์ ๊ฒ์๋ฌผ ์์ฑ์๊ฐ ์ญ์ ํ์์ต๋๋ค.
๋ค ๋ฉ์ผ ๊ฐ์๊ฑฐ์์
๊ทธ ์ฃ์กํฉ๋๋ค๋ง ์๋ ค์ฃผ์ ๊ฒ์ฒ๋ผ ์์ฑ ํด๋ดค๋๋ฐ trasform random ์ด ์ปจํ ์คํธ์ ์๋ค๊ณ ์ค๋ฅ๊ฐ ๋์ค๋๋ผ๊ตฌ์..! int random = Random; ๋ผ๊ณ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋๊ฑธ๊น์?