ย ย ย ย void Update()
ย ย ย ย {
ย ย ย ย ย ย if (Input.GetMouseButtonDown(0))
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
ย ย ย ย ย ย ย ย RaycastHit hit;
ย ย ย ย ย ย ย ย if (Physics.Raycast(ray, out hit, Mathf.Infinity))
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย if (hit.collider.name == "Sphere3")
ย ย ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย Temp = true;
ย ย ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย }
ย ย ย ย ย ย if (Temp == true)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย if (isMoving == true && moveFunc != null)
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย bool arrivedAtDestination = false;
ย ย ย ย ย ย ย ย ย ย // Call the delegate Movement Function...
ย ย ย ย ย ย ย ย ย ย arrivedAtDestination = moveFunc();
ย ย ย ย ย ย ย ย ย ย if (arrivedAtDestination == true)
ย ย ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย SetNextPosition();
ย ย ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย }
ย ย ย ย }
์ด๊ฒ ์๋ ์ฐ๋๊ฑฐ ๊ฐ์๊ธฐ ๊ด๋ช ๋ด๋ ค์ค๋ฏ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋๊ฑฐ ๊ฐ์๋ฐ
๋ง์ง๋ง ๊ด๋ฌธ์ด, ์ ๊ฑฐ ์คํผ์ด3๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ํ๋ฒ ํด๋ฆญํ๋ฉด ์ง์ ๋ ๊ธธ์ ์์ง์ด๊ณ ๋ฉ์ถ๋๋ฐ, ์ด๊ฒ ๋ฌด์กฐ๊ฑด ํ๋ฒ๋ง ๋จน๊ณ ๋๋ฒ์งธ ํด๋ฆญํ ๋๋ ๋จน์ง ์๋๋ผ๊ตฌ์.
์์ธ์ด Temp = true ์ํ๋ก ์ญ ์์ด์ ๊ทธ๋ฐ๊ฑฐ ๊ฐ์๋ฐ
Temp = false ๋ผ๊ณ ์ด๋์ ๋ง์น๋ค ์ ์ธ์ด ํ์ํ ๊ฑฐ ๊ฐ์๋ฐ ์ด๋์ ๋ฃ์ด์ค์ผ ํ ๊น์ ,,?
์ผ๋จ Temp == true ์ผ๋์ if๋ฌธ์ด ์ด๋์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ด๊ธด ํ๋, ์ ๊ธฐ์ Temp = false ๋ฅผ ์ง์ด๋ฃ์ด์ค๋ ์ค๋ฅ๋ง ๋จ๋..
์ฝ๋ฃจํด์ผ๋ก ํ๋๊ฒ๋ ์ข์๋ณด์ด๋ค์ WaitUntil ์จ์
ํ ใ ์ ๋ํฐ๋ฅผ ๋ฐฐ์ด์ง ์ผ๋ง ์๋์ง๋ผ.. ์ ๊ธฐ์ ์ฝ๋ฃจํด์ ์ด๋ค๋ฉด ์ด์ฐ ์จ์ค์ผ ํ ๊น์?? ์ ๊ฑฐ temp = true ์ ์ธํด์ค๊ฒ, ๋ง์ฐ์ค๋ก ์ค๋ธ์ ํธ๋ฅผ ํ๋ฒ๋ง ํด๋ฆญํด๋ ์ง์ ํ waypoint ๊ธธ์ ์ด๋ํ๊ฒ๋ ํ๋๊ฑด๋ฐ.... temp = false๋ก ์ธ์ ๋๋๋ ค์ค์ผ ํ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋๋ผ๊ตฌ์ ใ
temp๋ฅผ false๋ก ํด์ผ ํ๋ ํ์ด๋ฐ์ด waypoint์ ๋์ฐฉํ๋ ์์ ์ด๋ผ๋ฉด ์ฝ๋ฃจํด์ yield return new WaitUntil๋ก ํด๋ณด์ธ์ ์ ๋ํฐ ๋ฉ๋ด์ผ ๋ณด์๋ฉด ๊ฐ ์ค์ค๊ป๋๋ค
๋ง๋ถํ์๋ฉด ์ด๋์ ์์ํ ๋ StartCoroutine์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค IEnumerator C; if(C == null) C = StartCoroutine(function()); ์ด๋ฐ์์ผ๋ก ํ๋ฒ๋ง ์คํ๋๊ฒ ๋ง๋ค์ด์ฃผ์ธ์
๊ทธ๋ผ ์ ๋ฐ์ดํธ() ์์ ์๋ ค์ฃผ์ ์ฝ๋ฃจํด์ผ๋ก ์์์ ํด์ฃผ๋ฉด ๋๋๊ฑธ๋ ค๋์??
๋น ๋ ์ถ์ธก์ด ๋ง๋ค๋ฉด ์ ๋๋ก ์์ฑํ์๋ฉด ๋ ๊ป๋๋ค
์๋ ์ด๋๋ค ๋ฃ์ผ์ จ๋๋์? SetNextPosition(); ๋ฐ์ ๋ฃ์ด๋ณด๋ฉด ๋ ๊ฑฐ ๊ฐ๊ธฐ๋ ํ๋ฐ
Temp = false; ๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๊ฑ ์๋ฃ๊ณ ์คํ ์ค์ด์์ด์ ... Temp = false;๊ฐ ๋ค์ด๊ฐ๋ฉด ์์ ์บ๋ฆญํฐ๊ฐ ์ค๋ธ์ ํธ ํด๋ฆญํด๋ ์์ง์ด์ง ์๋๋ผ๊ตฌ์
์ผ๋จ ์ ๋ฅ์คํธํฌ์ง์ ๋ฐ์ ๋ฃ๊ณ ํ ์คํธ ํด๋ณด์๊ณ ์๋๋ฉด ์ ์ด๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฏ์ด๋ด์ผ ํ ๋ฏ. false; ๋ฅผ ์ด๋ฐ ๋ฃ์๋์ง ๋ชฐ๋ผ๋ ๋ฌด์กฐ๊ฑด ์๋๋ค๋ ๊ฑด ๋ง์ด ์๋์
์.. ์๋ชปํ๊ณ ์์๋ค์... ์ผ๋จ ์ ๋ฅ์คํธํฌ์ง์ ๋ฐ์ ๋ฃ์ผ๋ ์ค๋ธ์ ํธ๋ฅผ ํด๋ฆญํ๋ฉด ์บ๋ฆญํฐ๊ฐ ์์ง์ด๋ค๊ฐ ๋์ค์ ๋ฉ์ถฐ๋ฒ๋ฆฌ๊ณ ๋ค์ ํด๋ฆญํด์ค์ผ ๋ฉ์ท๋ ์๋ฆฌ์์ ๋ค์ ์์ง์ด๋ค์
๊ทธ๋ผ ์ด๋ ์ ์ฒด ๊ณผ์ ์ด ๋๋๊ฑธ ์๋ณํ ๋ค Temp๋ฅผ ๊บผ์ค์ผ ํ ๋ฏ
๊ทธ๋ผ ์ ๋ฅ์คํธํฌ์ง์ ๋ฐ์ if๋ฌธ ํ๋ ๋ ๋ง๋ค์ด์ ๋ง์ง๋ง ํฌ์ธํธ์ ๋์ฐฉํ์ ๊ฒฝ์ฐ temp = false ์ด๋ฐ ๋ฌธ๊ตฌ๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ ๊ฑธ๋ ค๋์?
์๋ง ๊ทธ๋์ผ๊ฒ ์ฃ ? ๋ ์ด์บ์คํ ํ๋ฉด ๋์ค๋ ์ขํ๋ฅผ ๊ธฐ์ ์ผ๋ก ํด๋น ์ขํ์ ๋์ฐฉํ์ ๋ temp๋ฅผ ๋๋ฉด ์ํ๋ ์๊พธ๋ก๋ ๋์ฌ ๊ฑฐ ๊ฐ์์.
๋ด๊ฐ ๋ณผ๋ ์ temp ๋ณ์๋ ๊ธฐ์กด ์คํฌ๋ฆฝํธ์ ์ ๋ฐ์ดํธ๋ฅผ ์ผ์ฃผ๋ ์ญํ ๋ฟ์ด๊ณ ์ด๋ ์ขํ๋ ์๋ํฐ์์ ์ค์ ํด์ค ๊ณณ์ผ๋ก ๊ณ ์ ๋์ด ์์. ๊ฒฐ๊ตญ temp๋ฅผ ์ผ๊ณ ๋๋๊ฑด ์๋ฏธ๊ฐ ์์. ์ด๋ ์ขํ๋ฅผ ๊ฐฑ์ ํ๋ ๊ธฐ๋ฅ์ด ํ์ํด๋ณด์
ํ ํ๋ ์๊น ํด๋ฆญ ํ๋ฒ๋ง ํด๋ ์บ๋ฆญํฐ๊ฐ ์ง์ ํ ๊ธธ์ ์ญ ํ๋ฐํด ๋๊ฒํ๋ ๋ฒ์ ๊ฐค์ ๋ฌผ์๋ค๊ฐ ๋ณ์ ์ง์ ํ๊ณ ๊ทธ ๋ณ์๊ฐ ์ผ์ก์ ๋ ์ด๋ ๋ด์ฉ์ ๋ฃ์ผ๋ผํด์ ์ถ๊ฐํ๋ ๊ฑด๋ฐ.. ์๋ชป๋ ๊ฑด๊ฐ์?
์ ๊ฒ ์์ผ๋ฉด ์ค๋ธ์ ํธ๋ฅผ ๋ง์ฐ์ค๋ก ๋ฏธ์น๋ฏ์ด ํด๋ฆญํด์ผ ์กฐ๊ธ์ฉ ์บ๋ฆญํฐ๊ฐ ์์ง์ด๋๋ผ๊ตฌ์
ํด๋ฆญ -> ํด๋ฆญํ ๊ณณ์ ์ขํ๋ฅผ ์ป๊ธฐ -> waypointList ๋ฅผ ๋น์ฐ๊ณ ํด๋น ์ขํ๋ฅผ ์ถ๊ฐ -> reset๋ญ์๊ธฐ ํจ์ ํธ์ถ
reset๋ญ์๊ธฐ ์๋๋ฉด SetNext~ ํจ์ ๊ฐ์๋ฐ ๋ด๋ถ ์ธ๋ฑ์ค ์ฒ๋ฆฌ๋ฅผ ํ์ธํด์ผ ์ ํํ ๊ฒ ๊ฐ์.
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=32159&page=1
์ด๊ฒ ์๊น ์ฌ๋ ธ๋ ์คํฌ๋ฆฝํธ ์ ์ฒด ๋ด์ฉ์ด๊ธดํ๋ฐ, ๋ฆฌ์ ํจ์๊ฐ ์ง๊ธ ๋ณด๋๊น ์ฒ์ ์ ํ ์์น๋ก ์ฎ๊ฒจ์ฃผ๋๊ฑฐ ๊ฐ์๋ฐ ์ด๊ฑฐ๋ ์ ์ด์ฃผ์ ๋๋ก๋ผ๋ฉด ๋ง์ง๋ง์ ๋ฃ์ด์ฃผ๋๊ฑด๊ฐ์?