ย void BulletRicochet()
ย ย {
ย ย ย ย Collider[] targetCol = Physics.OverlapSphere(this.transform.position, 100f, 3);
ย ย ย ย if (targetCol.Length > 0)
ย ย ย ย {
ย ย ย ย ย ย float[] targetDis = new float[targetCol.Length];
ย ย ย ย ย ย ArrayUtility.Remove(ref targetDis, 0);
ย ย ย ย ย ย float closeTarget = 0;
ย ย ย ย ย ย int closeTargetIndex = 0;
ย ย ย ย ย ย for (int i = 0; i < targetCol.Length; i++)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย targetDis[i] = Vector3.Distance(targetCol[i].transform.position, this.transform.position);
ย ย ย ย ย ย }
ย ย ย ย ย ย closeTarget = Mathf.Min(targetDis);
ย ย ย ย ย ย if (closeTarget > 5f)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย closeTargetIndex = ArrayUtility.IndexOf(targetDis, closeTarget);
ย ย ย ย ย ย ย ย Vector3 closeTargetDir = (targetCol[closeTargetIndex].transform.position - transform.position).normalized;
ย ย ย ย ย ย ย ย rb.velocity = closeTargetDir * speed;
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
์ผ๋จ ์๊ฐ๋๋ ๋๋ก ์ค๋ฒ๋ฉ ์คํผ์ด๋ก ๊ตฌํํ๋๋ฐ ์ด์์ด ์ ํํ
ํ๊ธฐ๋ ๊ฒ ์๋๋ผ ๊ตฌ์ฒ์ ๋ ๋๋ค.
์ ์๋๋ค ๊ฐ๋ฅด์นจ ์ข ๋ถํ๋๋ฆฝ๋๋ค.
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๋ฏธ์ ์ค๋ช ์ด ๋ถ์กฑํ๋ค ์ํฌ ๋์ดํธ ์ํ ํํธ๋ฆฌ์ค ๋ผ๋ ์ ๋์ด ๊ฐ์ง๊ณ ์๋ Moon glaive bounce ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ง์ด์์, ๋ํ๋ฅผ ๋๋ฌด ๋ง์ด ํด์ ์๋ชป๋งํจ
๊ตฌ์ฒ์ ๋ ๋๋ค๋๊ฒ ๋์ฒด ๋ญ๋ง์ด๋
๊ทธ๋์ ๋ ์ด๊ฑฐ ์ ๋๋ก ์์ง์? Collider[] targetCol = Physics.OverlapSphere(this.transform.position, 100f, 3);
๊ฐ ๊ณณ์ ๊ฐ์ง ๋ชปํ๊ณ ํค๋ฉ์ธ๋ค๊ตฌ
๋๋ฒ๊ทธ๋ก ๊ฑฐ๋ฆฌ ์ฐ์ด๋ณด๋ ๋๊ธฐ๋ ๋๋ ๊ฑฐ ๊ฐ์
๋๋ ์ง๋ฌธํ๋๋ฒ๋ถํฐ ๋ค์๋ฐฐ์๋ผ. ์ด์์ด ํ๊ฒ์ ์ฐพ์ง ๋ชปํด์ ์ผ์ง์ ์ผ๋ก ์ญ์ฑ ๋๊ฐ๋๊ฐ ์๋๋ฉด ํ๊ธฐ๊ธฐ๋ ํ๋๋ฐ ์๋ฑํ๊ณณ์ผ๋ก ํ๊ธฐ๋๊ฐ ์ข ์ ๋๋ก ์ค๋ช ์ ํด์ผ์ง ๋ด๊ฐ ใ ใ ๋ ๊ทธ์ง๊ฐ์ ์ฝ๋๊น์ง ํ์คํ์ค ํด์ํด์ผ ํ๋?
๋ฏธ์ ๋ด๊ฐ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ์ ์ ํ๋ค, ์ด์์ด ์ ํํ ๋ฟ์ผ๋ฉด, ๋ค๋ฅธ ์ ํํ ํ๊ธฐ๋ ๊ฒ ์๋๊ณ ์ฌ๋ฐฉํ๋ฐฉ์ ๋น๊ธ๋น๊ธ๋์,
๋ค์ํ๋ฒ ์ฐฌ์ฐฌํ ์ฝ์ด๋ดค๋๋ฐ, ์ด๊ฑฐ ์ธ์ ์ด๋์ ๋ฐ๋๋๋ ํจ์์? ์ด์์ด ์ ํํ ๋ถ๋ซํ์๋ ์ด์ ์ค๋ธ์ ํธ๊ฐ ์ค๋ฒ๋ฉ์คํผ์ด๋ก 200 ์ ๋ ์์์๋ ์ ๋ค์ค์ ๊ฐ์ฅ ๊ฐ๊น์ฐ๋ฉด์ 5 ์ ๋๋ณด๋ค ๋จผ ํ๊ฒ์ ํฅํด ๋ค์ ๋ ์๊ฐ๋ ํจ์์? ์ฌ๋ฐฉํ๋ฐฉ์ ๋น๊ธ๋น๊ธ ๋๋ค๋๊ฒ, ์ ์๊ฒ ๋ถ๋ซํ๊ธฐ ์ ์ ์ ํจ์๊ฐ ๊ณ์ ๋ถ๋ ค์ ๊ณ์ ๋ฐฉํฅ๋ฐ๊พธ๊ณ ์๋๊ฑฐ ์๋?
์ฌ๊ธฐ์ ๊ธฐ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๋งํ ์ฝ๋์ด๊ธด ํ๋ฐ, ์ด์์ด ๋ถ๋ซํ๊ธฐ ์ ์ ๊ณต์ค์์ ๋น๊ธ๋น๊ธ ๋๊ณ ์๋ค๋ฉด ์ BulletRichochet ์ด๋ผ๋ ํจ์๊ฐ ์ด์์ด ๋ถ๋ซํ๋ ๋ถ๋ ค์ง๋๊ฒ ์๋๋ผ, ๊ณ์ํด์ ๋ถ๋ ค์ง๊ณ ์์ด์ ์ ์๊ฒ ๋ ์๊ฐ๋ ๋์ค์ ํ๊ฒ์ ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์๊ฑฐ๊ฐ๋ค
ํจ์๊ฐ ๋ถ๋ ค์ง๋ ํ์ด๋ฐ์ ์ ํํ ๋ถ๋ชํ์ ๋ OnCollisionEnter ์์์ ์คํ๋๋ ํจ์์ผ.
๊ทธ๋ฌ๊ฒ ๋ค ๋ง๋๋ก ํ ๋ฒ ์ ์ฉ๋๊ณ ๋์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ๋์๊ฐ์ ๊ทธ๋ฐ ๊ฑฐ ๊ฐ์
๊ธ๊ณ ์ ์ด ๋์ค์ ์ด๋ํด ๋ฒ๋ฆฌ๋ฉด ์ด๊ฑฐ ์ด์ ์๋ง๋๊ฑฐ ์๋? ์ผ๋จ targetCol ์ ์ ๋๋ก ์ ๋ค์ ๊ฐ์ง๊ณ ์ค๊ณ ์๋์ง ํ์ธํด๋ณด๊ณ ์ ํจ์๊ฐ ์ด๋ ํ์ด๋ฐ์ ๋ถ๋ฆฌ๋์ง ๋ค์ ์ฒดํฌํด ๋ณด๋๊ฒ ์ข์๋ฏ
๊ณ ๋ง์ ์กฐ์ธ ์ฐธ๊ณ ํด์ ๊ณ ์ณ๋ณผ๊ฒ
๊ตฌํํ๊ธฐ ๋๋ฆ์ผ๋ฏ ๋ง์ ์ ์ ๋ ์๋ง๊ฒ ํ๋๊ฑฐ ์ฃผ์ํ๊ณ
์ํฌํด๋ดค์ผ๋ฉด ๋ค์์๋จน๋์ ๋์ธ๋ฐ ์ด๊ฑธ๋ก ์๋น๊ฑฐ๋๊ฒ๋ ๋๋จํ๋ ธ - dc App
๋ฑ์ ์๋ผ๊ฐ ์ฝ๋ ์ฝ์ง๋ ๋ชปํ๋๊ฒ ์ ๋งํฐ๋ค
์ฝ๋์ฝ๊ธฐ์ ์ ๊ธ์ฝ๋๋ฒ์ด๋ ๋ฐฐ์๋ผ - dc App
์ฌ๊ธฐ๊ฐ ์ํฌ ์ปค๋ฎค๋?
์ฝ๋ ์งค ๋ ์ฃผ์ ์ข ๋ฌ๋ฉด์ ์ง์ ํ์ฐธ ๋ค์ ๋ณด๋ฉด ์ง๊ฐ ์ง ์ฝ๋๊ฐ๊ณ ํ์ฐธ ํด์ํ๊ณ ์์ด์ผํจ