Unity - Project_Up

Dev_Jen
|2025. 8. 13. 10:31
๋ฐ˜์‘ํ˜•

๐ŸŽฎ Project_Up – Unity 3D ์„œ๋ฐ”์ด๋ฒŒ ์‹œ์Šคํ…œ ์ œ์ž‘๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ ์ œ๊ฐ€ ์ง„ํ–‰ํ•œ Unity ํ”„๋กœ์ ํŠธ Project_Up์„ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด ํ”„๋กœ์ ํŠธ๋Š” 3D ํ™˜๊ฒฝ์—์„œ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ด๋™ํ•˜๊ณ , ์˜ค๋ธŒ์ ํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ, ์ž์›์„ ์ฑ„์ง‘ํ•˜๊ณ  ์•„์ดํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์„œ๋ฐ”์ด๋ฒŒํ˜• ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

์ตœ๊ทผ์—๋Š” ์žฅ๋น„(Equip) ์‹œ์Šคํ…œ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ , ์†Œ๋น„ํ˜• ์•„์ดํ…œ ์ค‘์‹ฌ์˜ ๋‹จ์ˆœํ•œ ์ธ๋ฒคํ† ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ–ˆ์–ด์š”.
๋•๋ถ„์— ์ „์ฒด ๊ตฌ์กฐ๊ฐ€ ํ›จ์”ฌ ๊ฐ€๋ณ๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ์žฅ๋ฅด : 3D ์„œ๋ฐ”์ด๋ฒŒ / ์ธํ„ฐ๋ž™์…˜
  • ์—”์ง„ : Unity 2021.3 LTS
  • ๊ฐœ๋ฐœ ์–ธ์–ด : C#
  • ์ฃผ์š” ๋ชฉํ‘œ
    1. ์บ๋ฆญํ„ฐ ์ด๋™, ์ ํ”„, ๋‹ฌ๋ฆฌ๊ธฐ, ์นด๋ฉ”๋ผ ์ œ์–ด
    2. ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅํ•œ ์˜ค๋ธŒ์ ํŠธ์™€์˜ ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค
    3. ์†Œ๋น„ํ˜• ์•„์ดํ…œ ์ค‘์‹ฌ์˜ ์ธ๋ฒคํ† ๋ฆฌ ์‹œ์Šคํ…œ
    4. ํ™˜๊ฒฝ ์˜ค๋ธŒ์ ํŠธ(์ ํ”„ํŒจ๋“œ, ์ด๋™ํ•˜๋Š” ์ฐจ๋Ÿ‰) ๊ตฌํ˜„

๐Ÿ›  ์ฃผ์š” ๊ธฐ๋Šฅ

1. ํ”Œ๋ ˆ์ด์–ด ์‹œ์Šคํ…œ

  • ์ด๋™/์ ํ”„/๋‹ฌ๋ฆฌ๊ธฐ
    ๊ธฐ๋ณธ WASD ์ด๋™๊ณผ ์ ํ”„, Shift๋ฅผ ํ†ตํ•œ ๋‹ฌ๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ์นด๋ฉ”๋ผ๋Š” 3์ธ์นญ ์‹œ์ ์ด๋ฉฐ, ๋ฒฝ์ด๋‚˜ ์˜ค๋ธŒ์ ํŠธ์— ๋ถ€๋”ชํžˆ๋ฉด ์ž๋™์œผ๋กœ ์ถฉ๋Œ ๋ณด์ •์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์Šคํƒœ๋ฏธ๋‚˜ ๊ด€๋ฆฌ
    ๋‹ฌ๋ฆด ๋•Œ ์Šคํƒœ๋ฏธ๋‚˜๊ฐ€ ์†Œ๋ชจ๋˜๋ฉฐ, ์Šคํƒœ๋ฏธ๋‚˜๊ฐ€ 0์ด ๋˜๋ฉด ๋” ์ด์ƒ ๋‹ฌ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ƒํƒœ(Condition) ๊ด€๋ฆฌ
    ์ฒด๋ ฅ, ์Šคํƒœ๋ฏธ๋‚˜, ์†๋„ ์ฆ๊ฐ€(๋ฒ„ํ”„) ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , UI์™€ ์‹ค์‹œ๊ฐ„ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค.
  • ์• ๋‹ˆ๋ฉ”์ด์…˜ ์—ฐ๋™
    ์ด๋™ ์†๋„, ์ ํ”„ ์—ฌ๋ถ€, ๋‚™ํ•˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

2. ์•„์ดํ…œ & ์ธ๋ฒคํ† ๋ฆฌ

  • ์•„์ดํ…œ ํƒ€์ž…
    • Consumable : ์ฒด๋ ฅ ํšŒ๋ณต, ์Šคํƒœ๋ฏธ๋‚˜ ํšŒ๋ณต, ์†๋„ ์ฆ๊ฐ€ ๋“ฑ ์‚ฌ์šฉ ์‹œ ํšจ๊ณผ ์ ์šฉ
    • Environment : ํ™˜๊ฒฝ ์˜ค๋ธŒ์ ํŠธ(์ž์›, ์˜ค๋ธŒ์ ํŠธ ๋ฐฐ์น˜์šฉ)
  • ์ธ๋ฒคํ† ๋ฆฌ UI
    • ์Šฌ๋กฏ ๊ธฐ๋ฐ˜ UI๋กœ ๊ตฌ์„ฑ
    • ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์•„์ดํ…œ์€ ์Šคํƒ ๊ฐ€๋Šฅ
    • ์•„์ดํ…œ ์‚ฌ์šฉ ์‹œ ํ•ด๋‹น ํšจ๊ณผ ์ฆ‰์‹œ ์ ์šฉ
    • ์ธ๋ฒคํ† ๋ฆฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ์•„์ดํ…œ์„ ๋ฒ„๋ฆผ
  • ์•„์ดํ…œ ์ƒํ˜ธ์ž‘์šฉ
    ์›”๋“œ์— ๋–จ์–ด์ง„ ItemObject์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด ์ธ๋ฒคํ† ๋ฆฌ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

3. ์ƒํ˜ธ์ž‘์šฉ ์‹œ์Šคํ…œ

  • ํ™”๋ฉด ์ค‘์•™์—์„œ Raycast๋ฅผ ๋ฐœ์‚ฌํ•ด ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ง€ ์‹œ ์ƒํ˜ธ์ž‘์šฉ ์•ˆ๋‚ด UI(TextMeshPro) ํ‘œ์‹œ.
  • E ํ‚ค ์ž…๋ ฅ ์‹œ IInteractable ์ธํ„ฐํŽ˜์ด์Šค์˜ OnInteract() ํ˜ธ์ถœ.

4. ํ™˜๊ฒฝ ์˜ค๋ธŒ์ ํŠธ

  • JumpPad
    ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์˜ฌ๋ผ์„œ๋ฉด ์œ„๋กœ ์ ํ”„์‹œํ‚ค๊ณ , ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • Move_SportCar
    DoTween์„ ์‚ฌ์šฉํ•ด ์ฐจ๋Ÿ‰์ด ์•ž๋’ค๋กœ ์™•๋ณตํ•˜๊ฑฐ๋‚˜ ์›ํ˜• ๊ถค๋„๋ฅผ ๋„๋Š” ์›€์ง์ž„์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ์ด๋™ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ํœ ์ด ํšŒ์ „ํ•˜๋Š” ๋””ํ…Œ์ผ๊นŒ์ง€ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Resource
    ์ฑ„์ง‘ ์‹œ ์•„์ดํ…œ ๋“œ๋กญ ํ”„๋ฆฌํŒน์„ ์ƒ์„ฑํ•˜๋ฉฐ, ์ •ํ•ด์ง„ ์ˆ˜๋Ÿ‰๋งŒํผ๋งŒ ์ฑ„์ง‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

5. UI & ์‹œ๊ฐ ํšจ๊ณผ

  • UICondition : ์ฒด๋ ฅ, ์Šคํƒœ๋ฏธ๋‚˜, ๋ฒ„ํ”„ ์ƒํƒœ ํ‘œ์‹œ.
  • DamageIndicator : ํ”ผํ•ด๋ฅผ ๋ฐ›์œผ๋ฉด ํ™”๋ฉด์ด ๋ถ‰๊ฒŒ ํ”Œ๋ž˜์‹œ๋ฉ๋‹ˆ๋‹ค.
  • FootSteps : ์ด๋™ ์†๋„์— ๋”ฐ๋ผ ๋ฐœ์ž๊ตญ ์†Œ๋ฆฌ๊ฐ€ ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ†• ์ตœ๊ทผ ๋ฆฌํŒฉํ† ๋ง ํฌ์ธํŠธ

์ด๋ฒˆ ์—…๋ฐ์ดํŠธ์—์„œ ํŠนํžˆ ํฐ ๋ณ€ํ™”๋Š” ์žฅ๋น„ ์‹œ์Šคํ…œ ์ œ๊ฑฐ์ž…๋‹ˆ๋‹ค.

  • ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์žกํ–ˆ๋˜ ์žฅ์ฐฉ/ํ•ด์ œ ๋กœ์ง๊ณผ Equip ํด๋ž˜์Šค ์‚ญ์ œ
  • ์ธ๋ฒคํ† ๋ฆฌ์—์„œ ์žฅ์ฐฉ/ํ•ด์ œ ๋ฒ„ํŠผ ์ œ๊ฑฐ
  • ItemType์—์„œ Equipable ์ œ๊ฑฐ
  • ์•„์ดํ…œ์€ Consumable ๋˜๋Š” Environment๋งŒ ์กด์žฌ
  • Player ํด๋ž˜์Šค์—์„œ equip ํ•„๋“œ ์‚ญ์ œ

์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๋‹จ์ˆœํ•ด์ง€๊ณ , ์•„์ดํ…œ ๊ด€๋ฆฌ์™€ UI ๋™์ž‘์ด ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.


๐Ÿ“‚ ํด๋” ๊ตฌ์กฐ

Assets/
โ”œโ”€โ”€ 02.Scripts/
โ”‚   โ”œโ”€โ”€ Character/
โ”‚   โ”‚   โ”œโ”€โ”€ CharacterManager.cs
โ”‚   โ”‚   โ”œโ”€โ”€ Player.cs
โ”‚   โ”‚   โ”œโ”€โ”€ PlayerController.cs
โ”‚   โ”‚   โ”œโ”€โ”€ PlayerCondition.cs
โ”‚   โ”‚   โ”œโ”€โ”€ PlayerAnimation.cs
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Interaction/
โ”‚   โ”‚   โ”œโ”€โ”€ Interaction.cs
โ”‚   โ”‚   โ”œโ”€โ”€ ItemObject.cs
โ”‚   โ”‚   โ”œโ”€โ”€ Resource.cs
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Inventory/
โ”‚   โ”‚   โ”œโ”€โ”€ ItemData.cs
โ”‚   โ”‚   โ”œโ”€โ”€ ItemSlot.cs
โ”‚   โ”‚   โ”œโ”€โ”€ UIInventory.cs
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ UI/
โ”‚   โ”‚   โ”œโ”€โ”€ Condition.cs
โ”‚   โ”‚   โ”œโ”€โ”€ UICondition.cs
โ”‚   โ”‚   โ”œโ”€โ”€ DamageIndicator.cs
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Environment/
โ”‚   โ”‚   โ”œโ”€โ”€ JumpPad.cs
โ”‚   โ”‚   โ”œโ”€โ”€ Move_SportCar.cs
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ Sound/
โ”‚       โ””โ”€โ”€ FootSteps.cs

๐ŸŽฅ ํ”Œ๋ ˆ์ด ํ™”๋ฉด (GIF)


๐Ÿ’ก ๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋ณธ์ ์ธ ์„œ๋ฐ”์ด๋ฒŒํ˜• ์‹œ์Šคํ…œ์˜ ๋ผˆ๋Œ€๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€์Šต๋‹ˆ๋‹ค.
์žฅ๋น„ ์‹œ์Šคํ…œ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‚˜๋‹ˆ ์ธ๋ฒคํ† ๋ฆฌ์™€ ์•„์ดํ…œ ๊ตฌ์กฐ๊ฐ€ ํ›จ์”ฌ ๋ช…ํ™•ํ•ด์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์กŒ์–ด์š”.
๋‹ค์Œ์— ์ถ”๊ฐ€ํ•˜๊ณ ์‹ถ์€๊ฑด ์ „ํˆฌ ์‹œ์Šคํ…œ๊ณผ ํ€˜์ŠคํŠธ ์‹œ์Šคํ…œ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ถ™์—ฌ์„œ,
๋” ํ’๋ถ€ํ•œ ํ”Œ๋ ˆ์ด ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅํ•˜๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค!

๋ฐ˜์‘ํ˜•