Unity

[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„] ์œ ๋‹ˆํ‹ฐ ์‹œ๊ฐ„ ๊ฐœ๋… / ๊ฐ€์†๋„, ์œ„์น˜๋Š” Vector3 ๊ทธ๋Ÿผ ํšŒ์ „์€..??

์˜ค์„ผ์น˜ 2025. 4. 29. 23:24

๐Ÿ’ก Unity์—์„œ์˜ ์‹œ๊ฐ„...?

์˜ค๋Š˜๋ถ€ํ„ฐ๋Š” ์œ ๋‹ˆํ‹ฐ๋ฅผ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ž…๋ฌธํ•˜๋Š” ๊ณผ์ •์„ ๋ฐŸ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

 

๋ฐฐ์šฐ๋Š”๋ฐ Awake, Start, Update.. .. ๋“ฑ์˜ ๊ฐœ๋…๊ณผ Time.deltaTime ์ด๋ผ๋Š” ๊ฐœ๋…์ด ๋‚˜์™”๋Š”๋ฐ

๊ฐ‘์ž๊ธฐ deltaTime์—์„œ ์™œ ํ•„์š”ํ•œ์ง€ ๊ฐ์ด ์•ˆ ์™€์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๋Œ๋ ค๋ณด๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ์ดํ•ดํ•ด๋ดค๋‹ค.

๋ง‰์ƒ ๊ฐœ๋…์„ ์žก๊ณ  ๋‚˜๋‹ˆ, **์™œ ์ด๊ฑธ ์“ฐ๋Š”์ง€**๊ฐ€ ๋ถ„๋ช…ํ•ด์ ธ์„œ ์ •๋ฆฌํ•ด๋‘๋ คํ•œ๋‹ค.

 

 

๐Ÿงฉ ๋ฌธ์ œ

Time.deltaTime์„ ์™œ ์“ธ๊นŒ? ํ•˜๋ฉด์„œ ๋ญ.. ์˜ˆ๋ฅผ๋“ค์–ด 3, 2, 1์ดˆ ํ•˜๊ณ  3์ดˆ์˜ ์‹œ๊ฐ„์„ ์“ด๋‹ค๋ฉด,

๊ทธ๋ƒฅ -= 3 ํ•˜๋Š”๊ฑฐ๋ž‘ ๋ฌด์—‡์ด ๋‹ค๋ฅธ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ

์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.

 

์–ด์ฐจํ”ผ ํ”„๋ ˆ์ž„์ด ์ง€๋‚˜๊ฐ€๋Š” ๊ฑด ์‹ค์ œ๋กœ ์‹œ๊ฐ„์€ ํ๋ฅด๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ˆ๊นŒ ๋ง์ด๋‹ค.

๋™์ž‘ํ•˜๋Š” ๊ฒƒ์— ๋ฌด์Šจ ์ฐจ์ธ์ง€ ๊ฐ์ด ์•ˆ์™”๋‹ค.

๐Ÿ‘€ ..?
 

๐ŸŽฏ ์‹œ๋„

deltaTime์„ ์“ฐ๊ณ  ์•ˆ์“ฐ๊ณ  ์ฐจ์ด๋ฅผ ๋น„๊ตํ•ด๋ณด๊ธฐ๋„ ํ•˜๋ฉฐ ์‹คํ–‰๋„ ํ•ด๋ดค๋‹ค.

 

๋ˆˆ์œผ๋กœ ๋ณผ ๋• ์ฐจ์ด๊ฐ€ ์—†์—ˆ๋‹ค. ;;;

 

๊ฐ•์˜๋ฅผ 0.75๋ฐฐ์†์œผ๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ๋ณด๊ณ , ๊ด€๋ จ ๋˜์–ด ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋‹ค.

 

 

โœ… ํ•ด๊ฒฐ

์œ ๋‹ˆํ‹ฐ = ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ์ž‘๋™์„ ํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ -= 3f; ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์“ด๋‹ค๋ฉด,

ํ”„๋ ˆ์ž„๋งˆ๋‹ค 3์”ฉ ์ค„์–ด๋“ ๋‹ค. ๊ทธ 3์€ ์ดˆ๋‹จ์œ„๊ฐ€ ์•„๋‹ˆ๊ธฐ์— ์ง„์งœ ๋ช‡์ดˆ๊ฑธ๋ฆด์ง€๋Š” ํ”„๋ ˆ์ž„์— ๋”ฐ๋ผ ๋‹ค๋ฅดใ„ท

 

์„ฑ๋Šฅ์ด ์ข‹์€ ์ปดํ“จํ„ฐ, 60fps ์—์„œ ์‹œ๊ฐ„์„ ์žฌ๋ฉด ์—„์ฒญ ๋นจ๋ฆฌ ๋๋‚˜๊ณ ,

์„ฑ๋Šฅ ๋‚ฎ์€ ์ปดํ“จํ„ฐ, 30fps์—์„œ๋Š” ๊ทธ์— ๋น„ํ•ด ๋А๋ฆฌ๊ฒŒ ๋๋‚œ๋‹ค.

 

์—ฌ๋Ÿฌ ์œ ์ €๊ฐ€ ๋™์‹œ ์ ‘์†ํ•ด์„œ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฑฐ๋‚˜ ๋Œ€๊ฒฐํ•˜๋Š” ๋“ฑ์˜ 

์˜จ๋ผ์ธ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด๋‚˜ MMORPG,  ์‹ค์‹œ๊ฐ„ ์ „ํˆฌ ๊ฒŒ์ž„๊ฐ™์€ FPS/TPS/์•ก์…˜๊ฒŒ์ž„

ํ˜น์€ ์œ ์ €๋Œ€ ์œ ์ €! PvP ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„์—์„œ deltaTime์ด ์—†๋‹ค๋ฉด...

ํ”„๋ ˆ์ž„์— ์˜์กดํ•˜๋Š” ๊ฒŒ์ž„์ด๋ผ๋ฉด ์ •๋ง ๋ถˆ๊ณต์ •ํ•œ ๊ฒŒ์ž„์ด ๋˜์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

 

 

: ์œ ์ €

 

 

 

 

 

 

๐Ÿ“Œ ํ•ต์‹ฌ

Time.deltaTime = ํ”„๋ ˆ์ž„์— ์ƒ๊ด€ ์—†์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•˜๋‹ค.

                          = ์Šคํฌ๋ฆฝํŠธ์˜ ์—…๋ฐ์ดํŠธ์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

                          = ๊ฒŒ์ž„์€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ๋งŒ ๋™์ž‘ํ•จ. ๊ทธ๋ž˜์„œ ๋ฌผ๋ฆฌ์ ์ธ ์‹œ๊ฐ„์ด ํ•„์š”ํ•จ.

                          = ์‹œ๊ฐ„ ๊ทธ ์žก์ฑ„. ์šฐ๋ฆฌ๊ฐ€ ์‹œ๊ณ„๊ฐ€ ์—†์–ด๋„ ์‹ค์ œ๋กœ ์‹œ๊ฐ„์€ ํ๋ฅด๊ณ  ์žˆ์ง€ ์•Š๋Š”๊ฐ€...

                             ์ด ๊ฒŒ์ž„์—๋„ ํ”„๋ ˆ์ž„๊ณผ ๋ฌด๊ด€ํ•œ '์‹œ๊ฐ„'์ด๋ผ๋Š” ์กด์žฌ๋ฅผ ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 


 

 

 

๐Ÿ’ก ํšŒ์ „์€ Vector3 ๊ฐ€ ์•„๋‹Œ Quaternion?!

์˜ค๋ธŒ์ ํŠธ๋ฅผ ํšŒ์ „์‹œํ‚ค๋Š”๋ฐ transform.rotation = Vector3 ์ด๋ ‡๊ฒŒ ๋Š” XXXX

 

ํšŒ์ „์— Quaternion ์ด๋ผ๋Š” ๊ฐœ๋…์€ ์กฐ๊ธˆ ์–ด๋ ต๋‹ค./

 

 

๐Ÿงฉ ๋ฌธ์ œ

์œ„์น˜๋„ 

Vector3 position = transform.position;

 

๊ฐ€์†๋„๋„

Vector3 velocity ~ ๋ผ๊ณ  ์“ฐ๋А๋ฐ

 

ํšŒ์ „๋งŒ ์™œ ๋‹ค๋ฅธ๊ฑธ ์“ธ๊นŒ?

 

๊ทธ๋ฆฌ๊ณ  Quaternion.Euler(0, 90, 90); = y์ถ•์œผ๋กœ 90๋„, z์ถ•์œผ๋กœ๋„ 90๋„ ํšŒ์ „ํ•œ ํšŒ์ „๊ฐ’

์ผ๊นŒ?

๊ถ๊ธˆ...

 

๐ŸŽฏ ์‹œ๋„

 

๊ทธ๋ƒฅ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋งŒ ์จ๋ด๋„ ์•ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€๋‚œ๋‹ค.

Vector3๋Š” struct ๋ผ๊ณ  ์จ์žˆ๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ 

์˜ค๋ฅ˜ ์„ค๋ช…์—๋Š” ์œ ๋‹ˆํ‹ฐ ์—”์ง„ Quaternion ํ˜•์‹์„ ๋ฒกํ„ฐ3๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•œ๋‹ค.

 

Quaternion.Euler(0, 90, 30) ์ด๋Ÿฐ์‹์œผ๋กœ ๋‹ค์–‘ํ•˜๊ฒŒ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด ์‹œ๋„ํ•ด๋ณด๋ฉฐ ์”ฌ์„ ํ™•์ธ ํ•ด๋ณด์•—๋‹ค.

 

2D์—์„œ๋Š” x์ถ•๊ณผ y์ถ• ๊ธฐ์ค€์ด ํด ์ค„ ์•Œ์•˜๋Š”๋ฐ ํšŒ์ „์€ ๋˜ ๋‹ฌ๋ž๋”ฐ.

x์ถ•์€ ๋ช‡์„ ๋„ฃ์–ด๋„ ๋ณ€ํ•˜์ง€ ์•Š์•˜๋‹ค.

 

 

โœ… ํ•ด๊ฒฐ

์˜ค๋ฅ˜๋ฅผ ํ•ด์„ํ•ด ๋ณด์ž๋ฉด,

Quaternion๊ณผ Vector3 ๋Š” ์‚ฌ์‹ค ๋‘˜๋‹ค ๊ตฌ์กฐ์ฒด์ธ๋ฐ ์™œ ์•ˆ๋˜๋А๋ƒ..

 

C# ์€ ๊ตฌ์กฐ์ฒด์™€ ๊ตฌ์กฐ์ฒด๋ผ๋ฆฌ ๋ช…์‹œ์ ๋ณ€ํ™˜์ด ์•ˆ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋ƒฅ ๋ฒกํ„ฐ ์ ์œผ๋ฉด ์•Œ์•„์„œ ํšŒ์ „์œผ๋กœ ์•Œ์•„๋“ฃ์ง€ ์ข€...

๊ทธ๋ ‡๊ฒŒ ์ƒˆ๊ฒจ๋“ฃ์ง€ ๋ชปํ•˜๊ณ  ์ž๋™์œผ๋กœ ์•ˆ๋ฐ”๊ฟ” ์ค€๋‹จ์†Œ๋ฆฌ๋‹ค.

 

transform์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ ์ปดํฌ๋„ŒํŠธ์—๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ์œ„์ง€, ํšŒ์ „, ํฌ๊ธฐ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค.

์œ„์น˜๋ž‘ ํฌ๊ธฐ๋Š” x, y, z ์ถ•์˜ ์ขŒํ‘œ๊ฐ’๋งŒ ์ž…๋ ฅํ•˜๋ฉด ์–ด๋””์— ์–ผ๋งŒํ•œ ํฌ๊ธฐ์ธ์ง€ ์‰ฝ๊ฒŒ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ.

 

C#์–ธ์–ด์—์„œ์˜ ํšŒ์ „์€ ์—ฐ์‚ฐ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํŽธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์‚ฌ๋žŒ ๋ง๋กœ๋Š” ์ถ•์œผ๋กœ ํ”Œ๋Ÿฌ์Šค ๋งˆ์ด๋„ˆ์Šค๋ฅผ ํ™œ์šฉํ•ด ๋ช‡๋„๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ,

์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์‚ฌ์‹ค ์ด๊ฑฐ๋กœ ์–ด๋””๋กœ ์–ผ๋งŒํผ ํšŒ์ „๋œ๊ฑด์ง€ ์ƒ์ƒ์ด ์ž˜ ์•ˆ๊ฐ€๊ธฐ๋„ํ•œ๋‹ค.

(ํ•œ์ถ•๋งŒ ์“ฐ๋ฉด ์ƒ์ƒ์ด ๊ฐ€์ง€๋งŒ.. ์…‹๋‹ค ๋ฐ”๋€Œ๋ฉด ์–ด์ตํ›„.)

 

์•„๋ฌดํŠผ ๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์„œ ์“ธ ๋•Œ๋Š”, x, y, z ๋ฐฉํ–ฅ๊ฐ’๋งŒ์œผ๋กœ๋Š” ํ‘œํ˜„์„ ํ•  ์ˆ˜ ์—†๋‹ค.

๊ทผ๋ฐ ์–ด์ฐจํ”ผ Quaternion์ด ๊ตฌ์กฐ์ฒด์•„๋‹ˆ๋ƒ1?  ๊ทธ ๊ตฌ์กฐ์ฒด ์•ˆ์— ํฌํ•จ๋œ static ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.

๊ทธ ๋’ค์— .Euler(x, y, z) ๋ฅผ ์ ์–ด์ฃผ๋Š” ๊ฒƒ. ์ด๊ฒƒ์ด static ๋ฉ”์„œ๋“œ์ด๋‹ค.

 

Euler : ๊ฐ๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ํšŒ์ „์„ ์ •์˜ํ•˜๋Š” ํ•จ์ˆ˜.

(๋ฐœ์Œ์€ ์•ˆ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฒจ์„œ ๋†€๋ž๊ฒŒ๋„ ์˜ค์ผ๋Ÿฌ๋‹ค. ๊ทธ๋ ‡๋‹ค ๊ทธ ์ˆ˜ํ•™์ž ์˜ค์ผ๋Ÿฌ๋‹ค ใ…‹ใ…‹)

 

Quaternion.Euler(0, 90, 90); = ๋จผ์ € z์ถ•์œผ๋กœ 90๋„, ๊ทธ ๋‹ค์Œ y์ถ•์œผ๋กœ 90๋„ ํšŒ์ „ํ•œ ํšŒ์ „ ๊ฐ’!

 

์˜ค์ผ๋Ÿฌ ๊ฐ๋„๋Š” ๋’ค์—์„œ ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉ์ด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ์ˆœ์„œ ๋•Œ๋ฌธ์— ์ƒ๊ฐ๊ณผ ์™„์ „ ๋‹ค๋ฅด๊ฒŒ ํšŒ์ „ํ•œ ๋ชจ์Šต์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ๊ผญ ์”ฌ์„ ๋ด์•ผ๊ฒŸ๋‹ค

 

 

๐Ÿ“Œ ํ•ต์‹ฌ

Vector3 = ์œ„์น˜, ๋ฐฉํ–ฅ, ๊ฐ€์†๋„ ๋“ฑ x, y, z๋Š” ๋ฒกํ„ฐ ์„ฑ๋ถ„ ์ถ•๊ด€๋ จ

ํšŒ์ „ = Quaternion.Euler ์‚ฌ์‹ค x, y, z, w ๋กœ

w๋Š” ์Šค์นผ๋ผ ์„ฑ๋ถ„์ด๋ผ๋Š”๋ฐ,  ์ด๊ฒŒ w ๊ฐ’์€ ์ง๊ด€์ ์ด์ง€ ์•Š์•„์„œ ๋ฒˆ๊ฑฐ๋กญ๋‹ค๊ณ  ํ•œ๋‹ค. ์–ด์ฐจํ”ผ ๋งŽ์ด ์•ˆ์“ฐ๋Š” ๋“ฏํ•˜๋‹ค.

์–ด์ฐจํ”ผ ๋ฒกํ„ฐ ์„ฑ๋ถ„๋งŒ์œผ๋กœ๋„ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” w๋ฅผ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•ด์ค€๋‹ค๊ตฌํ•œ๋‹ค. ์ด๊ฑธ ์ดํ•ดํ•˜๋ ค๋ฉด ํ—ˆ์ˆ˜์™€ ํ•จ๊ผ ๋ณต์†Œ์ˆ˜๋ฅผ ์ดํ•ดํ•ด์•ผํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ใ…‹ใ…‹ ๊ทธ๋ƒฅ ๊ทธ๋Ÿฐ๊ฐ€ ๋ณด๋‹ค.. ํฅ๋ฏธ๋กœ์›Œ๋ณด์ด๋‚˜ ์‹œ๊ฐ„๊ด€๊ณ„์ƒ ๋‚˜์˜ ๋‹จ๊ณ„๋Š” ๊ทธ๊ฒŒ ์ค‘์š”ํ•œ ๊ฒก ์•„๋‹ˆ๋‹ˆ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์•Œ์•„๋ณด๊ฒ ๋‹ค..

 

 

+ ์ˆ˜์—…ํ•˜๋ฉฐ ๋„์ ๊ฑฐ๋ฆฐ ๋ฉ”๋ชจ์žฅ