์•ˆ๋…•ํ•˜์„ธ์š” ๊ฐœ๋ฐœ ์ผ์ง€ ์ž‘์„ฑํ•˜๋Ÿฌ ์˜ค๋Š˜๋„ ๋“ค๋ €์Šต๋‹ˆ๋‹ค.


์˜ค๋Š˜์€ ์ถ”๊ฐ€ ์Šค์ƒท๊ณผ ์˜์ƒ ์‚ด์ง ๊ณต๊ฐœํ•˜๋ฉฐ, ๊ฐœ๋ฐœ ๊ด€๋ จ ์งˆ๋ฌธ๋„ ํ•˜๋‚˜ ๋“œ๋ฆด๊นŒ ํ•ฉ๋‹ˆ๋‹ค.



์ผ๋‹จ ์Šค์ƒท ์ถ”๊ฐ€, ์ฑ•ํ„ฐ 3 ์Šคํ…Œ์ด์ง€





ํ”Œ๋ ˆ์ด ์˜์ƒ - ๋‹ค๋“ค ๋ฐ”์˜๋‹ˆ๊นŒ ์•„์ฃผ ์งง๊ฒŒ ์ค€๋น„ํ•ด๋ดค์Œ (๋ฌผ๋ก  2๋ฐฐ์†์œผ๋กœ ์ฐ์€ ๊ฑฐ๋ผ ์‹ค์ œ ๊ฒŒ์ž„ ๋ณด๋‹ค ๋” ์‹ ๋‚˜๋ณด์ž„)





์Œ ์ผ๋‹จ ๊ฐœ๋ฐœ์ด ์ดˆ์งœ๋ผ์„œ (์ฒ˜์Œ ๋งŒ๋“ค์–ด๋ณธ ๊ฒŒ์ž„) ๊ธด๊ฐ€๋ฏผ๊ฐ€ํ•œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์Œ... ์—ฌ๊ธด ๊ณ ์ˆ˜๊ฐ€ ๋งŽ์œผ๋‹ˆ ํ•จ ๋ณด์‹œ๊ณ  ์˜๊ฒฌ ์ข€ ์ฃผ์„ธ์š”.


๊ณต๊ฒฉ ๋ฒ”์œ„์— ์ ์„ ํŒ์ •ํ•˜๋Š” ์ฝ”๋“œ์ธ๋ฐ์š”.


์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ 2D ์„œํด ์ฝœ๋ผ์ด๋”๋กœ ํŒ์ •ํ•˜๋ ค ํ–ˆ๋Š”๋ฐ์š”. ๋ญ”๊ฐ€ ํ—ˆ์ ‘ํ•œ ๋А๋‚Œ์ด ๋“ค์–ด์„œ ...


๊ตฌ๊ธ€๋ง ์—„์ฒญํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„์™”์ฃ . ๋ฌผ๋ก  ์ž˜ ๋ฉ๋‹ˆ๋‹ค.ย 

๊ฐœ๋ฐœ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๋‹ค์ง„ ๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ๊ถ๊ธˆ์ฆ์— ํ•จ ์งˆ๋ฌธํ•ด ๋ด์š”.


์ด๋ ‡๊ฒŒ Math ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด(?) ์จ์„œ ํŒ์ •ํ•˜๋Š” ๊ฒŒ ๋งž๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ 2D ์„œํด๋กœ ํŒ์ •ํ•ด ๋ฒ„๋ฆฌ๋Š” ๊ฒŒ ์ข‹์€์ง€...


์•”ํŠผ ๋ญ๋“  ๋‹ค ๊ถ๊ธˆํ•œ ์ดˆ์งœ๊ฐ€...ย 

protected bool InEllipse(Transform other)
{
// ํƒ€์›์— ๋“ค์–ด์˜ค๋Š”์ง€ ๊ฒ€์‚ฌ
_xRadius = unitData.attackRangeRadius * 10.0f;
_yRadius = _xRadius * 0.5f;

var localPosition = transform.localPosition;
_dot1 = localPosition;
_dot1.x -= Mathf.Sqrt(_xRadius * _xRadius - _yRadius * _yRadius);
_dot2 = localPosition;
_dot2.x += Mathf.Sqrt(_xRadius * _xRadius - _yRadius * _yRadius);

float dist = 0;

var position = other.localPosition;
dist += Vector2.Distance(position, _dot1);
dist += Vector2.Distance(position, _dot2);

return dist <= _xRadius * 2;
}

์ถ”๊ฐ€๋กœ rider ๊ตฟ!ย 

์›” ๋ช‡ ๋งŒ์›์œผ๋กœ ์ดˆ๋ณด๋ฅผ ๋œ ์ดˆ๋ณด๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์—๋””ํ„ฐ์ž„.


์ฆ๊ฑฐ์šด ์—ฐํœด ๋ณด๋‚ด์‹œ๊ณ  ์ €๋Š” ๋‹ค์‹œ ๊ฐœ๋ฐœ ์†์œผ๋กœย