๐Ÿ”บ ๋ฒกํ„ฐ์™€ ํ–‰๋ ฌ๋กœ ์ดํ•ดํ•˜๋Š” ์บ๋ฆญํ„ฐ ์ด๋™ – ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์ˆ˜ํ•™ ์™„์ „ ์ •๋ฆฌ

 

๊ฒŒ์ž„์—์„œ ์บ๋ฆญํ„ฐ๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์›€์ง์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ๋„, ์‹ค์ œ๋กœ๋Š” **๋ฒกํ„ฐ(Vector)์™€ ํ–‰๋ ฌ(Matrix)**๋ผ๋Š” ์ˆ˜ํ•™ ๊ฐœ๋…์ด ๋’ค์—์„œ ์›€์ง์ž„์„ ๊ณ„์‚ฐํ•œ๋‹ค.
์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฒกํ„ฐ์™€ ํ–‰๋ ฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ, Unity์—์„œ ์บ๋ฆญํ„ฐ ์ด๋™ ๊ตฌํ˜„๊นŒ์ง€ ์‰ฝ๊ฒŒ ํ’€์–ด๋ณด๊ฒ ๋‹ค.


1. ๋ฒกํ„ฐ(Vector)๋ž€?

  • ํฌ๊ธฐ์™€ ๋ฐฉํ–ฅ์„ ๊ฐ€์ง„ ๋ฐฉํ–ฅ ๊ฐ’

  • 2D ๋ฒกํ„ฐ: (x, y) → x์ถ• ๋ฐฉํ–ฅ, y์ถ• ๋ฐฉํ–ฅ

  • 3D ๋ฒกํ„ฐ: (x, y, z) → 3์ฐจ์› ๊ณต๊ฐ„

์˜ˆ์‹œ: ์บ๋ฆญํ„ฐ ์ด๋™

Vector3 moveDirection = new Vector3(1, 0, 0); // ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ transform.position += moveDirection * speed * Time.deltaTime;

→ ๋ฒกํ„ฐ๋Š” ๋ฐฉํ–ฅ + ์†๋„ ๊ณ„์‚ฐ์— ํ•ต์‹ฌ


2. ๋ฒกํ„ฐ ์—ฐ์‚ฐ ๊ธฐ๋ณธ

  • ๋ง์…ˆ: ๋‘ ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ๊ณผ ํฌ๊ธฐ ํ•ฉ์‚ฐ

  • ๋บ„์…ˆ: ๋ชฉํ‘œ ์ง€์ ๊ณผ ํ˜„์žฌ ์œ„์น˜ ์ฐจ์ด → ์ด๋™ ๋ฐฉํ–ฅ

  • ์Šค์นผ๋ผ ๊ณฑ: ๋ฒกํ„ฐ ํฌ๊ธฐ ์กฐ์ ˆ (์†๋„ ์กฐ์ ˆ)

  • ์ •๊ทœํ™”(Normalize): ํฌ๊ธฐ๋ฅผ 1๋กœ ๋งŒ๋“ค์–ด ๋ฐฉํ–ฅ๋งŒ ํ™œ์šฉ

Vector3 direction = (target.position - transform.position).normalized; transform.position += direction * speed * Time.deltaTime;

→ ๋ชฉํ‘œ ์ง€์ ์„ ํ–ฅํ•ด ์ผ์ • ์†๋„๋กœ ์ด๋™


3. ํ–‰๋ ฌ(Matrix)๋ž€?

  • ๋ฒกํ„ฐ ๋ณ€ํ™˜์„ ์œ„ํ•œ 2D/3D ์ˆ˜ํ•™ ๊ตฌ์กฐ

  • ํšŒ์ „(Rotation), ์ด๋™(Translation), ํ™•๋Œ€/์ถ•์†Œ(Scale) ์ ์šฉ ๊ฐ€๋Šฅ

  • Unity ๋‚ด๋ถ€์ ์œผ๋กœ Transform์€ ํ–‰๋ ฌ ์—ฐ์‚ฐ์œผ๋กœ ์ฒ˜๋ฆฌ

์˜ˆ์‹œ: ํšŒ์ „

transform.Rotate(new Vector3(0, 1, 0), 90f * Time.deltaTime);

→ Y์ถ• ๊ธฐ์ค€์œผ๋กœ ๋งค ํ”„๋ ˆ์ž„ 90๋„/sec ํšŒ์ „


4. ๋ฒกํ„ฐ + ํ–‰๋ ฌ๋กœ ์ด๋™ ๊ตฌํ˜„

  • ์œ„์น˜ ์ด๋™: position += direction * speed * deltaTime

  • ํšŒ์ „: transform.rotation = Quaternion.Euler(...) → ํ–‰๋ ฌ/์ฟผํ„ฐ๋‹ˆ์–ธ ์ ์šฉ

  • ์Šค์ผ€์ผ: transform.localScale = new Vector3(1, 1, 1)

์ฆ‰, ์บ๋ฆญํ„ฐ ์ด๋™์€ **๋ฒกํ„ฐ(๋ฐฉํ–ฅ, ์†๋„) + ํ–‰๋ ฌ(ํšŒ์ „, ๋ณ€ํ™˜)**์˜ ๊ฒฐํ•ฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.


5. ๋งˆ๋ฌด๋ฆฌ

๋ฒกํ„ฐ์™€ ํ–‰๋ ฌ์„ ์ดํ•ดํ•˜๋ฉด,

  • ํ”Œ๋ ˆ์ด์–ด, NPC, ์นด๋ฉ”๋ผ ์›€์ง์ž„์„ ์ •ํ™•ํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ œ์–ด

  • ์• ๋‹ˆ๋ฉ”์ด์…˜, ํˆฌ์‚ฌ์ฒด, ์ด๋™ ๊ฒฝ๋กœ ๊ณ„์‚ฐ ๋“ฑ ๊ฒŒ์ž„ ์ „๋ฐ˜์˜ ํ•ต์‹ฌ ์ˆ˜ํ•™์„ ์ดํ•ด

๐Ÿ‘‰ ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ค‘๋ ฅ, ํฌ๋ฌผ์„  ์šด๋™ ๊ณต์‹์œผ๋กœ ์ ํ”„/ํˆฌ์‚ฌ์ฒด ๊ตฌํ˜„์„ ๋‹ค๋ค„์„œ ๋ฌผ๋ฆฌ ๊ธฐ๋ฐ˜ ์›€์ง์ž„์„ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ๋‹ค.

๋Œ“๊ธ€

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

๐Ÿ—„️ ๊ฒŒ์ž„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ – ์ธ๋ฒคํ† ๋ฆฌ, ๋žญํ‚น, ์„ธ์ด๋ธŒ ์‹œ์Šคํ…œ

๐Ÿ”’ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๋ณด์•ˆ ๊ฐ•ํ™” – ์น˜ํŠธ ๋ฐฉ์ง€์™€ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ

๐Ÿš€ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๊ฒŒ์ž„ ์ตœ์ ํ™”์™€ ์„ฑ๋Šฅ ํŠœ๋‹ – ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๊ตฌํ˜„