ย ย ย ย ย ย Vector2 frontWallVec = new Vector2(rigid.position.x, rigid.position.y + 0.25f);
ย ย ย ย ย ย RaycastHit2D wallRayHit = Physics2D.Raycast(frontWallVec, Vector3.right * moveDir, 0.375f, groundLayer);
ย ย ย ย ย ย if (wallRayHit.collider.tag == "Rock" ||
ย ย ย ย ย ย ย ย wallRayHit.collider.tag == "Dirt" ||
ย ย ย ย ย ย ย ย wallRayHit.collider.tag == "Grass")
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย Debug.Log("collider detected");
ย ย ย ย ย ย ย ย moveDir *= -1;
ย ย ย ย ย ย ย ย CancelInvoke();
ย ย ย ย ย ย ย ย Invoke("Think", 2f);
ย ย ย ย ย ย }
ย ย ย ย ย ย else Debug.Log("no collider detected");
if ์ฐธ์ผ๋๋ย collider detected ๋ก๊ทธ ์ ์์ถ๋ ฅํ๋๋ฐ else์ผ๋๋ ์ย no collider detected ์ถ๋ ฅ์ ๋ชปํด?
์ ๋์ด์บ์คํธ์ ์๋ฌด๊ฒ๋ ์ ๊ฑธ๋ ค์ null์ด๋ฉดย no collider detected ์ถ๋ ฅํ๊ณ ๊น๋ํ๊ฒ ๋๋๋ฉด ๋๋๊ฑฐ ์๋?? ์๋๊ฐ ใ
ใ
์กฐ๊ฑด์ if (๋จธ์๊ธฐ๋จธ์๊ธฐ == null) ํ๊ณ else๋ก ๋ค์ง์ด์ ์ก์๊ฑด ์ค๋ฅ ์ ๋จ๋๋ฐ ์ด๊ฑด ๋จ๋ค.
if์์ ์ด๋ฏธ ์๋ฌ๋จ๋๊น
์ฝ์์ฐฝ์ if ์ฐธ์ผ๋ ์๋ฌ ์ ๋จ๊ณ else์ผ๋๋ง ์๋ฌ ๋ด๋๋ฐ?
๋๊ฐ ๋งํ๊ฑฐ์ ๋ต์ด ์๋ค
null ์ผ ๊ฒฝ์ฐ๋ ๋ฐ๋ก ์กฐ๊ฑด ๋ฌ์์ค์ผ ๋๋๊ฑฐ์?? ์ง๊ธ ์กฐ๊ฑด๋ฌธ์์ else๋ ๋ญ๊ฐ ์ ์ดํ๋ค๋ ์ ์ ํ์ else์ธ๊ฑฐ์?
if๋ฌธ์์ ์ด๋ฏธ null์ ์ ๊ทผํ๋ คํ๋ ์ฐจ๋จ๋นํ๊ฑฐ๋ค. ์กฐ๊ฑด ๋งจ ์์ ๋จธ์๊ธฐ != null ํ๋ฉด ์๋ฌ๋ ์๋๊ณ ์ํ๋๋๋ก ์๋ํ ๊ฑฐ๋ค
๋นก๋๊ฐ๋ฆฌ๋ผ ๋ชจ๋ฅด๊ฒ ๋ค. if์ =null ์ด๋ฉด return์์ผ๋๊ณ else if ์ ์ ์กฐ๊ฑด ๊ฑธ์ด์ ์ค๋ฅ ์์ ๊ธด ํ๋๋ฐ, ์ด๊ฒ if์ ์กฐ๊ฑด ๊ฑธ๊ณ else์ return์ํจ๊ฑฐ๋ ๋ญ ์ฐจ์ด์ธ์ง ๋ชจ๋ฅด๊ฒ ์. ์ผ๋งค๋ก ๋ฐฐ์์ ๊ทธ๋ฐ๊ฐ ใ ใ
wallrayhit๊ฐ ์๋๋ฐ wallrayhit์ ๋ด๋ถ์ ์ ๊ทผํ๋ คํ๋๊น ์ค๋ฅ๋๋๊ฑฐ ๋ฐ๋๋ก wallrayhit๊ฐ ์์ผ๋ฉด ์ ์์ ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๊น ๋๊ฐ ์๊ฐํ๋๋ก ๋๊ฑฐ๊ณ
์ฌํ ์ ๊ทผ ๋ชปํ๋ ์ํฉ์ else์ ํฌํจ๋๋ค๊ณ ์๊ฐํ๊ณ ์์์ด. ๊ณ ๋ง๋น!
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ ๋๋ null์ด๋ฉด if์กฐ๊ฑด๋ฌธ์ ํด๋น ์ ํ๋๊น ๊ทธ๋ฅ else๋ก ๋น ์ง๋ค๊ณ ๋ง ์๊ฐํ๊ณ ์์๋ค.
๋กํ~
๊ทธ๊ฑฐ ๋จ๋ฉด ๊ทธ ์คํฌ๋ฆฝํธ ๋ฉ์ถ๋๊ฐ ๊ณ ์ณ
ใ ใ ์์์ ์๋ ค์ค์ ๊ณ ์ณค์