๊ฒ์์ข ๋ฅ๋ ํด๋ฆฌ์ปค๊ฒ์์ธ๋ฐ ์ค๋ธ์ ํธ๋ง๋ค ์์น๊ฐ ์ ํด์ ธ์์ย
์ผ์ชฝ ์๋ถํฐ ์์ํด์ ์ค๋ธ์ ํธ๋ฅผ ๊ตฌ๋งคํ ๋๋ง๋ค ์ ๋ฐ์ ๋์ฌ์ง๋ ํ์์
๊ทผ๋ฐ ์ด๋ฌ๋ฉด ๋ด๊ฐ ์ ํ ์์๋ก๋ฐ์ ๋ฐฐ์น๋ฅผ ๋ชปํ๋๊น ํน์ ์์๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ ์ฌ๋์ ์ํด์ ํธ์ง๋ชจ๋๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ๋๋ฐ..
{
ย ย ย ย txt.text = "ํธ์ง๋ชจ๋";
ย ย ย ย if (Input.GetMouseButtonDown(2))
ย ย ย ย {
ย ย ย ย ย ย Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
ย ย ย ย ย ย RaycastHit hit;
ย ย ย ย ย ย if (Physics.Raycast(ray, out hit))
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย Pot1 = hit.collider.gameObject;
ย ย ย ย ย ย ย ย
ย ย ย ย ย ย ย ย Vector3 oriPos1 = Pot1.transform.position;
ย ย ย ย ย ย ย ย Animator anim = Pot1.GetComponent<Animator>();
ย ย ย ย ย ย ย ย anim.SetBool("Edit", true);
ย ย ย ย ย ย ย ย if (Input.GetMouseButtonDown(2))
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย Ray ray2 = Camera.main.ScreenPointToRay(Input.mousePosition);
ย ย ย ย ย ย ย ย ย ย RaycastHit hit2;
ย ย ย ย ย ย ย ย ย ย if (Physics.Raycast(ray2, out hit2))
ย ย ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย
ย ย ย ย ย ย ย ย ย ย ย ย Pot2 = hit2.collider.gameObject;
ย ย ย ย ย ย ย ย ย ย ย ย
ย ย ย ย ย ย ย ย ย ย ย ย Vector3 oriPos2 = Pot2.transform.position;
ย ย ย ย ย ย ย ย ย ย ย ย anim.SetBool("Edit", false);
ย ย ย ย ย ย ย ย ย ย ย ย Pot1.transform.position = oriPos2;
ย ย ย ย ย ย ย ย ย ย ย ย Pot2.transform.position = oriPos1;
ย ย ย ย ย ย
ย ย ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย ย ย txt.text = "";
ย ย ย ย ย ย }
ย ย ย ย }
ย ย ย ย
ย ย }
์ด๋ฐ์์ผ๋ก ํธ์ง๋ฒํผ ๋๋ฅด๋ฉด ์ ํจ์๊ฐ ์คํ๋๊ฒํ์ง๋ง ์ฐํด๋ฆญํด๋ ์๋ฌด ๋ฐ์์ด์์ย
์ค๊ฐ์ ๋๋ฒ๊ทธ๋ก๊ทธ ๋ฃ์ด์ Pot1 ์ด๋ฆ ๋งํด๋ด๋ผ์์ผ๋ ์ฝ์์ ์๋ธ
ํธ์ง๋ชจ๋์ผ๋๋ ํด๋ฆญํจ์๋ ์๋ ๋๋๋ฐ.. ์ด์ผ ์ ๊ทผํด์ผํ ๊น์ย
Input.GetMouseButtonDown(2)๋ ๋ง์ฐ์ค ํ ํด๋ฆญ์ด๊ณ 1์ด ์ค๋ฅธํด๋ฆญ์๋?
0 1 2 ์์์ธ์ค์์๋๋ฐ ํ ํด๋ฆญ์ด์๋ค๋ ..๊ทผ๋ฐ ๊ทธ๋ฌธ์ ๋ ์๋ ํ ์ด๋ ์ฐํด๋ฆญ ๋๋ค ์๋จน์ด์..
ํด๋ฆญ ์์ฒด๊ฐ ์ ๋ ฅ์ด ์๋๋ค๋๊ฑฐ์?
ํธ์ง๋ชจ๋ ์ ๋ค์ด๊ฐ์ํ์ฌ๋ ์ขํด๋ฆญ์ ๋จน๋๋ฐ(ํด๋ฆญํ๋ฉด ๋์ ์ฌ๋ผ๊ฐ) ์ฐํด๋ฆญ์ด๋ ํ ํด๋ฆญ์ด๋ ์ ๋ ฅ์ด์๋จ
ray์ ๊ฑธ๋ฆฌ๋ ์ค๋ธ์ ํธ๊ฐ ์๋๊ฒ ์๋๋ผ ํด๋ฆญ ์์ฒด๊ฐ ์๋ ์๋ ์๋..? ๋๋ฒ๊ทธ ํด๋ดค์ด? ์ฐํด๋ฆญ ์์ ํ๋ ์ฝ๋ผ์ด๋์ฒดํฌ ์์ชฝ์ ํ๋ ํด๋ด ใฑใฑ
๋๋ฒ๊ทธ๋ก๊ทธif (Input.GetMouseButtonDown(2)) ์์ด๋ if (Physics.Raycast(ray, out hit))์์ ์ถ๊ฐํ๋๋ฐ ์๋ฌด๊ฒ๋ ์๋จ๊ณ ์ฌ์ ํ ํด๋ฆญ์ ์๋จนํ๋๊ฑฐ๋ด์ ์์ ์ฒซ๋ฒ์งธ ํธ์งํจ์์์ if (Input.GetMouseButtonDown(2))์ฌ๊ธฐ๋ก ์งํ์ด ์๋๋๊ฑฐ๊ฐ์๋ฐ ๋ฒํผ์ผ๋ก ํธ์ถํ๋ ํจ์์์ if๋ฌธ๋ฃ์ผ๋ฉด ์๋์๊ฐ๊ณ ๊ทธ๋ฐ๊ฒ์๋?ใ ใ
์์ ์ฝ๋ ๋ ์์ผ๋ฉด ์กฐ๊ธ๋ง ๋ ๋ณด์ฌ์ค๋ดฅ
์์ ์ฝ๋๊ฐ ๋ ์์ง์๊ณ ์ ๊ฒ ํธ์งํจ์ ์ ์ฒด์ธ๋ฐ ๋ฒํผ ๋๋ฅด๋ฉด ์ ๊ฒ ์คํ๋๊ฒ ๋ง๋ค์ด๋จ์
๋ฒํผ์ ๋๋ฅธ๋ค๋๊ฒ ์.. ์ ๊ฑด ๋ฒํผ์ ๋๋ฅด๋ ์๊ฐ ์คํ๋๋ ํจ์์ธ๋ฐ ํธ์ง๋ชจ๋์ธ ๋์ ์คํ๋๊ฒ ํด์ผํ์ง ์์๊น??
bool ํ์ ์ผ๋ก ๋ณ์ํ๋ ์ ์ธํด์ ์ ๋ฐ์ดํธ๋ฌธ์ bool==true์ผ๋ ๋์ํ๋๋ก ํ๋๊ฒ๋ ์๊ฐํด๋ดค๋๋ฐ ๊ทธ๋ผ ๋๋ฌด ๋ฆฌ์์ค๋ญ๋น๊ฐ ์ปค์ง์ง์๋์ฌ?.. ๋งค ํ๋ ์๋ง๋ค ๊ฒ์ฌํด์ผ๋๋๋ฐ
public void PotEdit() { Editing = true; if(Editing) {์์์ผ๋์ฝ๋} ์ด๋ ๊ฒ์จ๋ดค๋๋ฐ ํด๋ฆญํ๋ฉด ํธ์ถ๋๋์ ๋ PotEdit()์ด๊ณ ,,๊ทผ๋ฐ ์ฌ์ ํ ์๋จ
๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ฉด ๋ญ๋น๋ฅผ ๋ํ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง ์ง๊ธ ๋น์ฅ ๋ ์ค๋ฅด๋๊ฒ ์์ผ๋ฉด ๊ทธ๋ฅ ํ๋๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ผ ๊ฒ ๊ฐ์ bool ํ๋ ๊ฒ์ฌํ๋ค๊ณ ํฐ์ผ๋์ง ์์ผ๋๊ป
if(Editing)์ PotEditํจ์ ์์๋๋ฉด PotEdit๊ฐ ์คํ๋๋ ์๊ฐ์๋ง ํธ์ถ๋์์ด..
์ ๋ฐ์ดํธ์ ๋ฃ๊ณ ๋๋ฆฌ๊ณ ์๋๋ฐ ์ผ๋ถ๋ฌray,ray2๋ก ๋ถ๋ฆฌํ๋๋ฐ 1๋ฒ์ค๋ธ์ ํธ์ ํด๋ฆญํ์๋ง์ 2๋ฒ์ด๋๋๊ฑด.. ์กฐ๊ฑด๋ฌธ์ด ์๋ชป๋๊ฑฐ๊ฒ ์ ธ?
1๋ฒ์ค๋ธ์ ํธ์ ์ฐํด๋ฆญ์ ํ์๋ง์ hit,hit2๋๋ค 1๋ฒ์ค๋ธ์ ํธ๊ฐ ๋ผ๋ฒ๋ฆผ
๊ทธ์น ์ฝ๋๊ฐ ๊ทธ๋ฌ๋๊ป
์ผ๋จ ๋ ๊ณ ๋ฏผํด๋ณผ๊ฒ์!! ๊ฐ์ฌํฉ๋๋ค
ํ์ดํ ์ด์ผ ํ ์์์ด!