[UE5] ๐ŸƒOld Input System์œผ๋กœ 3์ธ์นญ ์กฐ์ž‘ ๊ตฌํ˜„ (ๅฎŒ)

Singery00ยท2024๋…„ 3์›” 26์ผ
1

UE5 Blueprint

๋ชฉ๋ก ๋ณด๊ธฐ
3/29
post-thumbnail

๊ฐœ์š”

๐Ÿƒ ์–ธ๋ฆฌ์–ผ ์—”์ง„5์˜ Old Input System์„ ์‚ฌ์šฉํ•˜์—ฌ 3์ธ์นญ ์บ๋ฆญํ„ฐ ์กฐ์ž‘ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ด๋ณด์ž.
ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ๋Š” ์•„๋ž˜์˜ ์กฐ์ž‘๋ฒ•์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๋‹ค.

  1. W,A,S,D ์ด๋™
  2. Space Bar ์ ํ”„
  3. ๋งˆ์šฐ์Šค ์‹œ์  ๋ณ€ํ™˜

์ด์ „ ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ์˜ค์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Blueprint๋กœ ์ฝ”๋”ฉํ•˜์—ฌ ์บ๋ฆญํ„ฐ ์กฐ์ž‘์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
2. ํ”„๋กœ์ ํŠธ ์„ค์ •
3. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์•กํ„ฐ ์ƒ์„ฑ
4. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์ฝ”๋”ฉ
5. ๊ฐœ์„ 


๋ณธ๋ก 


Mapping ๋…ธ๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ

Blueprint์—๋””ํ„ฐ์˜ [Event Graph]๋กœ ์ด๋™ํ•˜๊ณ  ๋ชจ๋‘ ์‚ญ์ œํ•ด์ฃผ์ž

๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด์„ ์šฐํด๋ฆญํ•˜๋ฉด ๋…ธ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ์ด ๋œฌ๋‹ค.
๊ฒ€์ƒ‰ํ•  ๋•Œ Context Sensitive๋ฅผ ์ฒดํฌํ•ด์ฃผ์ž!

ํ•ด๋‹น์ฐฝ์— inputaxis๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ Project Settings์—์„œ Mappingํ•œ ๊ฐ’์ด ์žˆ๋‹ค ์ด๋“ค์„ ๋ชจ๋‘ ์ถ”๊ฐ€ํ•ด์ฃผ์ž.

โ—์ด 5๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹คโ—
1. Move Forward / Backward
2. Move Right / Left
3. Look Right / Left Mouse
4. Look Up / Down Mouse
5. Jump (๊ฒ€์ƒ‰์ฐฝ์— action events๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‚˜์˜จ๋‹ค.)

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜ ํ™”๋ฉด๊ณผ ๊ฐ™์ด 5๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


โŒจ๏ธ W,A,S,D ์กฐ์ž‘

W,A,S,D์œผ๋กœ ์ด๋™ ์กฐ์ž‘๋ถ€ํ„ฐ ๊ตฌํ˜„ํ•˜๊ฒ ๋‹ค.
๋นˆ๊ณต๊ฐ„์„ ์šฐํด๋ฆญ ํ›„ ์•„๋ž˜ ๋…ธ๋“œ 2๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

Forward Vector๋…ธ๋“œ๋Š” Move Forward / Backward์™€ ํ•œ ์Œ
Right Vector๋…ธ๋“œ๋Š” Move Right / Left์™€ ํ•œ ์Œ

  1. Get Actor Forward Vector
  2. Get Actor Right Vector

๊ทธ๋ฆฌ๊ณ  Add Movement Input ๋…ธ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ›„ 2๊ฐœ ์ถ”๊ฐ€ํ•œ๋‹ค.

์ง€๊ธˆ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ด์–ด๋ณด๊ฒ ๋‹ค.

  1. InputAxis์˜ ํ๋ฆ„์„ ์„ ๊ฐ๊ฐ Add Movement Input์— ๋„ฃ์–ด ์ค€๋‹ค.
  1. InputAxis์˜ Axis Value๋ฅผ Add Movement Input์˜ Scale Value์— ๋„ฃ์–ด ์ค€๋‹ค.
  1. Get Actor Forward Vector์˜ Return Value๋ฅผ Add Movement Input์˜ World Direction์— ๋„ฃ์–ด ์ค€๋‹ค.

๋ชจ๋‘ ์ด์–ด์ค€ ํ›„ โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ›„ ํ”Œ๋ ˆ์ดํ•˜๋ฉด W,A,S,D๋กœ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค!
ํ˜น์‹œ ์บ๋ฆญํ„ฐ๊ฐ€ ์ขŒ์šฐ๋ฐ˜์ „, ์ƒํ•˜๋ฐ˜์ „์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋ฉด Project Settings์˜ Mapping๊ฐ’์ด ๋ฐ˜๋Œ€๋กœ ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์ž.


๐Ÿ–ฑ๏ธ๋งˆ์šฐ์Šค ์‹œ์  ์กฐ์ž‘

์ด๋ฒˆ์—๋Š” ๋งˆ์šฐ์Šค ์‹œ์  ์กฐ์ž‘์„ ๊ตฌํ˜„ํ•ด๋ณด์ž.

์ขŒ์šฐ ๋งˆ์šฐ์Šค ์‹œ์ 

๋นˆ๊ณต๊ฐ„์„ ์šฐํด๋ฆญ ํ›„ Add Controller Yaw Input๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

โ—InputAixs Look Right / Left Mouse์™€ ํ•œ ์Œ์ด๋‹คโ—

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์„ ์„ ์ด์–ด์ฃผ๋ฉด ๋์ด๋‹ค.

ํ”Œ๋ ˆ์ด ํ•ด๋ณด๋ฉด ๋งˆ์šฐ์Šค ์ขŒ์šฐ ์‹œ์  ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.


์ƒํ•˜ ๋งˆ์šฐ์Šค ์‹œ์ 

๋นˆ๊ณต๊ฐ„์„ ์šฐํด๋ฆญ ํ›„ Add Controller Pitch Input๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

โ—InputAixs Look Up / Down Mouse์™€ ํ•œ ์Œ์ด๋‹คโ—

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์„ ์„ ์ด์–ด์ค€๋‹ค.

ํ”Œ๋ ˆ์ด ํ•ด๋ณด๋ฉด ๋งˆ์šฐ์Šค ์ƒํ•˜ ์‹œ์  ์กฐ์ž‘์ด ์•ˆ๋œ๋‹ค!

์ถ”๊ฐ€์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

  1. ์ขŒ์ธก Componentsํƒญ์˜ Spring Arm์„ ํƒ
  2. ์šฐ์ธก Detailsํƒญ์˜ ๊ฒ€์ƒ‰์ฐฝ์—์„œ pawn๊ฒ€์ƒ‰
  3. Use Pawn Control Rotation์„ ์ฒดํฌํ•œ๋‹ค.

์ด์ œ ์ƒํ•˜ ๋งˆ์šฐ์Šค ์‹œ์  ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.


โŒจ๏ธ ์ ํ”„ ์กฐ์ž‘

Space Bar๋ฅผ ๋ˆŒ๋Ÿฌ ์ ํ”„ ์กฐ์ž‘์„ ๊ตฌํ˜„ํ•˜๊ฒ ๋‹ค.
๋นˆ๊ณต๊ฐ„์„ ์šฐํด๋ฆญ ํ›„ jump๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•œ๋‹ค.
๊ทธ๋Ÿผ ํŒŒ๋ž€์ƒ‰ function์˜ Jump ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์˜ InputAction Jump ๋…ธ๋“œ์˜ Pressedํ๋ฆ„์„ ์ด์–ด์ฃผ๋ฉด ๋์ด๋‹ค.

ํ”Œ๋ ˆ์ดํ•ด๋ณด๋ฉด ์ ํ”„๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค!
๋งŒ์•ฝ ์ ํ”„๊ฐ€ ๋„ˆ๋ฌด ์•ฝํ•œ ๊ฒƒ ๊ฐ™๋‹ค๋ฉด ์ถ”๊ฐ€ ์„ค์ •์œผ๋กœ ์กฐ์ ˆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  1. ์ขŒ์ธก Componentsํƒญ์—์„œ BP_Player ์„ ํƒ
  2. ์šฐ์ธก Detailsํƒญ์—์„œ jump ๊ฒ€์ƒ‰
  3. ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์กฐ์ ˆ

Jump Z Velocity์™ธ์—๋„ Gravity๋“ฑ์˜ ์—ฌ๋Ÿฌ ์„ค์ •์ด ์žˆ๋Š”๋ฐ ์ถ”ํ›„ ์ž์„ธํžˆ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ๋‹ค.


๐Ÿ”ผ ๊ฐœ์„ 

๋งˆ์šฐ์Šค ์กฐ์ž‘์€ ๋ณดํ†ต ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์— ์˜ํ•ด ๋ฐ˜์‘ํ•œ๋‹ค.
์ด๋•Œ, ์‚ฌ์šฉ์ž์˜ ์‹œ์Šคํ…œ์ด๋‚˜ ๊ฒŒ์ž„์ด ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ํ”„๋ ˆ์ž„ ์†๋„๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ฒŒ์ž„์ด ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ์ด DeltaTime์ด๋‹ค.

์šฐ๋ฆฌ๋Š” ๋งˆ์šฐ์Šค ์กฐ์ž‘ ๋ถ€๋ถ„์—์„œ DeltaTime์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐœ์„ ํ•  ๊ฒƒ์ด๋‹ค.

MouseTurnSpeed๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  Default Value๋ฅผ 20์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜๋ฅผ Get์œผ๋กœ ๋Œ์–ด์™€ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

2๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

  1. Get World Delta Seconds
  2. Multiply (์ขŒ์ธก ํ•€์„ ์šฐํด๋ฆญ ํ›„ Add Pin์„ ๋ˆŒ๋Ÿฌ ์ž…๋ ฅ๊ฐ’์ด 3๊ฐœ๋กœ ๋งŒ๋“ ๋‹ค. )

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์กด์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋˜ ์ž…๋ ฅ๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ณฑ์—ฐ์‚ฐ์— 3๊ฐ€์ง€ ์ž…๋ ฅ๊ฐ’์„ ๋ชจ๋‘ ๋„ฃ๋Š”๋‹ค.

  1. InputAxis์˜ AxisValue
  2. Mouse Turn Speed
  3. Get World Delta Seconds์˜ Return Value

๊ณฑ์—ฐ์‚ฐ์˜ Return๊ฐ’์„ Add Controller์— ๋„ฃ์–ด์ค€๋‹ค.

๋งˆ์šฐ์Šค ์ขŒ์šฐ ์ž…๋ ฅ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ
์ƒํ•˜ ์ž…๋ ฅ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ž‘์—…ํ•ด์ค€๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๋น„๊ตํ•˜์—ฌ ์ž‘์—… ๋‚ด์šฉ์„ ํ™•์ธํ•˜์ž.


๋งˆ๋ฌด๋ฆฌ

์ด๊ฒƒ์œผ๋กœ Old Input System์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ๋ฆฌ์–ผ ์—”์ง„5์—์„œ ์บ๋ฆญํ„ฐ๋ฅผ ์กฐ์ž‘์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์€ Enhanced Input System์„ ์‚ฌ์šฉํ•˜์—ฌ ์บ๋ฆญํ„ฐ ์กฐ์ž‘์„ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

์กฐ์ž‘์‹œ์— ์ ์ ˆํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ์ถ”ํ›„ ํฌ์ŠคํŒ… ํ•˜๊ฒ ๋‹ค.

1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
2. ํ”„๋กœ์ ํŠธ ์„ค์ •
3. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์•กํ„ฐ ์ƒ์„ฑ
4. ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์ฝ”๋”ฉ
5. ๊ฐœ์„ 

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€