[Unreal] μ½œλ¦¬μ „

2023. 7. 7. 16:37Β·πŸ“ Game/✏ Unreal

1. μ½œλ¦¬μ „

1) 객체 λ°˜μ‘

μ§€μš°κ°œλ₯Ό 벽으둜 λ˜μ§„λ‹€λ©΄ μ§€μš°κ°œλŠ” λ²½κ³Ό μΆ©λŒν•΄μ„œ νŠ•κ²¨ λ‚˜μ˜¨λ‹€. 그런데 κ²Œμž„ μ„Έκ³„μ—μ„œλŠ” λͺ¨λ“  물체가 μ΄λŸ¬ν•œ ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§€λ©΄ μ•ˆ λœλ‹€. μ™œλƒν•˜λ©΄ 물체와 μ„œλ‘œ μΆ©λŒν•˜μ§€ μ•Šμ„ μˆ˜λ„ 있고 λ‹€μ–‘ν•œ κ²½μš°κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

이처럼 κ²Œμž„ κ°œλ°œμ—μ„œλŠ” 물체가 μΆ©λŒν•  λ•Œ μ–΄λ–»κ²Œ λ°˜μ‘ν•  것인지λ₯Ό μ„€μ •ν•΄μ•Ό ν•œλ‹€. μ–Έλ¦¬μ–Όμ—μ„œλŠ” μ΄λŸ¬ν•œ 섀정을 κ°μ²΄ λ°˜μ‘μ΄λΌ λΆ€λ₯΄λ©° 3κ°€μ§€ μ’…λ₯˜κ°€ μžˆλ‹€.

  • 블둝(Block)
    • μ„œλ‘œκ°€ μ„œλ‘œλ₯Ό νŒŒκ³ λ“€μ§€ μ•Šκ²Œ ν•œλ‹€.
    • 두 λŒ€μƒμ΄ μ„œλ‘œ λŒ€ν•˜λŠ” 방식이 λͺ¨λ‘ 블둝이어야 ν•œλ‹€.
  • μ˜€λ²„λž©(Overlap)
    • μ½œλΌμ΄λ”λΌλ¦¬μ˜ 쀑볡을 ν—ˆμš©ν•˜μ§€λ§Œ μƒνƒœλ₯Ό κ²€μΆœν•΄μ„œ ν™œμš©ν•  수 있게 ν•œλ‹€.
    • 두 λŒ€μƒμ΄ μ„œλ‘œ λŒ€ν•˜λŠ” 방식이 λͺ¨λ‘ μ˜€λ²„λž©μ΄μ–΄μ•Ό ν•œλ‹€.
  • λ¬΄μ‹œ(Ignore)
    • μ„œλ‘œλ₯Ό μ™„μ „νžˆ λ¬΄μ‹œν•œλ‹€.
    • 블둝과 μ˜€λ²„λž©μ΄ κ²ΉμΉ  λ•Œλ„ λ¬΄μ‹œλœλ‹€.

 

2) 객체 채널

κ³΅ν†΅λœ νŠΉμ§•μ„ κ°€μ§„ μ˜€λΈŒμ νŠΈλ“€μ„ ν•˜λ‚˜μ˜ 그룹으둜 μ„€μ •ν•˜λŠ” 것을 κ°μ²΄ 채널이라 λΆ€λ₯Έλ‹€. λ””ν΄νŠΈλ‘œ 6개의 채널을 μ œκ³΅ν•˜λ©° μ»€μŠ€ν…€ 채널을 μΆ”κ°€ν•  μˆ˜λ„ μžˆλ‹€.

  • WorldStatic: μŠ€νƒœν‹± λ©”μ‹œ, λΈŒλŸ¬μ‹œ, 정적인 배경물에 μ‚¬μš©ν•˜λŠ” 채널
  • Pawn: ν”Œλ ˆμ΄μ–΄ λ˜λŠ” AIκ°€ μ»¨νŠΈλ‘€ν•˜λŠ” κ²Œμž„ 캐릭터 Pawn에 μ‚¬μš©ν•˜λŠ” 채널
  • Vehicle: Pawn이 νƒ‘μŠΉν•˜λŠ” νƒ‘μŠΉ 기ꡬ에 μ‚¬μš©ν•˜λŠ” 채널
  • PhysicsBody: 물리 μ—”μ§„μ—κ²Œ μ œμ–΄λ₯Ό λ§‘κΈ΄ 강체에 μ‚¬μš©ν•˜λŠ” 채널
  • Destuctible: 물리 μ—”μ§„μ˜ κΈ°λŠ₯으둜 νŒŒκ΄΄λ˜λŠ” 물체에 μ‚¬μš©ν•˜λŠ” 채널
  • WorldDynamic: λͺ¨λΉŒλ¦¬ν‹° 섀정이 무버블인 앑터에 μ‚¬μš©ν•˜λŠ” 채널

 

λ‹€λ₯Έ μ½œλΌμ΄λ”μ™€ μΆ©λŒν•  λ•Œμ˜ 객체 λ°˜μ‘μ„ 객체 채널 λ‹¨μœ„λ‘œ κ²°μ •ν•œλ‹€. 즉, μΆ©λŒν•œ μƒλŒ€λ„ 객체 채널을 κ°€μ§€κ³  있기 λ•Œλ¬Έμ— μ„œλ‘œμ— λŒ€ν•œ λ°˜μ‘μ„ μ„€μ •ν•˜λŠ” 것이닀.

 

3) μ½œλ¦¬μ „ 프리셋

μ•žμ„œ μ„€λͺ…ν–ˆλ˜ 객체 λ°˜μ‘ 및 채널을 μ‰½κ²Œ μ„€μ •ν•˜λŠ” 방법이 μžˆλŠ”λ°, λ°”λ‘œ μ½œλ¦¬μ „ 프리셋이닀. μ½œλ¦¬μ „ 프리셋은 'λ°°κ²½ 물체 μ „μš© μ„€μ •', 'μ°¨λŸ‰ μ „μš© μ„€μ •' λ“± μ—¬λŸ¬ 섀정을 미리 λ§Œλ“€μ–΄μ£Όκ³  ν• λ‹Ήν•΄μ„œ μ‰½κ²Œ μ‚¬μš©ν•  수 있게 ν•˜λŠ” κΈ°λŠ₯이닀. μ–Έλ¦¬μ–Όμ—μ„œλŠ” 18κ°€μ§€ μ’…λ₯˜μ˜ μ½œλ¦¬μ „ 프리셋을 μ œκ³΅ν•œλ‹€.

 

μ½œλ¦¬μ „ 프리셋

 

2. μ½œλ¦¬μ „ λ©”μ‹œ

μ½œλ¦¬μ „ λ©”μ‹œλŠ” λ‘ μ˜€λΈŒμ νŠΈλ‚˜ 애셋이 μ ‘μ΄‰ν•˜λŠ” 것에 λŒ€ν•΄ λ°˜μ‘ν•˜λŠ” λ©”μ‹œμ΄λ‹€.

  • ν”Œλ ˆμ΄μ–΄μ—κ² 보이지 μ•ŠλŠ”λ‹€.
  • μ‚¬μš©ν•˜λŠ” 폴리곀, λ²„ν…μŠ€ μˆ˜κ°€ κ°€μž₯ 적도둝 λ§Œλ“œλŠ” 것이 μ’‹λ‹€.

 

μ½œλ¦¬μ „ λ©”μ‹œλŠ” 크게 3κ°€μ§€ λ°©λ²•μœΌλ‘œ 생성할 수 μžˆλ‹€.

 

1) μŠ€νƒœν‹± λ©”μ‹œ μ• μ…‹

μŠ€νƒœν‹± λ©”μ‹œ 애셋에 μ½œλ¦¬μ „μ„ μ‹¬λŠ” 방법이닀. Maya와 같은 μ™ΈλΆ€ λͺ¨λΈλ§ νŒ¨ν‚€μ§€λ‘œ λ©”μ‹œμ— μ½œλ¦¬μ „μ„ λ§Œλ“€μ–΄ 언리얼 엔진이 μΈμ‹ν•˜λ„λ‘ ν•˜λŠ” 것이닀.

 

2) κΈ°λ³Έ λ„ν˜• μ»΄ν¬λ„ŒνŠΈ

언리얼 μ—”μ§„μ—μ„œ 직접 μ½œλ¦¬μ „ λ©”μ‹œλ₯Ό μƒμ„±ν•˜λŠ” 방법이닀. λ‹¨μˆœν•˜κ²Œ κ΅¬, 캑슐, λ°•μŠ€ λͺ¨μ–‘μ˜ μ½œλ¦¬μ „μ„ 생성할 μˆ˜λ„ μžˆμ§€λ§Œ, Auto Convex Collision μ˜΅μ…˜μ„ 톡해 λ©”μ‹œμ— λ§žλŠ” μ½œλ¦¬μ „μ„ μžλ™μœΌλ‘œ 생성할 μˆ˜λ„ μžˆλ‹€. Auto Convex Collision μ˜΅μ…˜μ€ κ°€μž₯ μ •ν™•ν•˜μ§€λ§Œ κ°€μž₯ λ§Žμ€ λΉ„μš©μ΄ λ“ λ‹€.

 

μ½œλ¦¬μ „ μΆ”κ°€

 

3) ν”Όμ§μŠ€ μ• μ…‹

μ†ŒμŠ€ μ• μ…‹(FBX 파일)에 λΌˆκ°€ λ“€μ–΄μžˆλ‹€λ©΄ μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œλΌ ν•œλ‹€. μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œλŠ” μž„ν¬νŠΈ μ‹œ μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œμ™€ μŠ€μΌˆλ ˆν†€ 애셋이 ν•¨κ»˜ μΆ”κ°€λœλ‹€. μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œλŠ” κ²Œμž„μ—μ„œ ν‘œμ‹œμ— μ‚¬μš©λ˜λŠ” μ‹œκ°μ μΈ λ©”μ‹œ λ°μ΄ν„°λ‘œ λΈ”λ£¨ν”„λ¦°νŠΈλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ 맡에 μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œ μ•‘ν„°λ‘œ 직접 λ°°μΉ˜ν•  수 μžˆλ‹€. μŠ€μΌˆλ ˆν†€μ€ μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œμ—μ„œ μ‚¬μš©ν•˜λŠ” 뼈 ꡬ쑰 μ •λ³΄λ‘œ μ•‘ν„°κ°€ μ•„λ‹ˆλ―€λ‘œ 맡에 λ°°μΉ˜ν•  수 μ—†λ‹€.

 

μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œμ™€ μŠ€μΌˆλ ˆν†€ μ• μ…‹

 

μŠ€νƒœν‹± λ©”μ‹œλŠ” λ³€ν˜•λ˜μ§€ μ•ŠμœΌλ―€λ‘œ λ©”μ‹œ 전체에 μ½œλ¦¬μ „μ„ μΆ”κ°€ν•  수 μžˆμ—ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ³€ν˜•λ˜λŠ” μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œλŠ” κΈ°λ³Έ 포즈λ₯Ό 기반으둜 μ½œλ¦¬μ „μ„ λ§Œλ“€μ–΄λ„ λ©”μ‹œκ°€ λ³€ν˜•λ˜μ–΄ μ œλŒ€λ‘œ μž‘λ™λ˜μ§€ μ•ŠλŠ”λ‹€. κ·Έλž˜μ„œ μŠ€μΌˆλ ˆνƒˆ λ©”μ‹œμ˜ μ½œλ¦¬μ „μ€ μŠ€μΌˆλ ˆν†€μ˜ κ΄€μ ˆκ³Ό κ΄€μ ˆ 사이에 캑슐 μ½œλ¦¬μ „ λ˜λŠ” λ°•μŠ€ μ½œλ¦¬μ „μ„ μΆ”κ°€ν•΄ μ• λ‹ˆλ©”μ΄μ…˜κ³Ό ν•¨κ»˜ 움직이도둝 μ μš©ν•œλ‹€. μ΄λŸ¬ν•œ μ• λ‹ˆλ©”μ΄μ…˜ λŒ€μ‘ μ½œλ¦¬μ „ 데이터λ₯Ό ν”Όμ§μŠ€ 애셋이라 λΆ€λ₯Έλ‹€.

 

ν”Όμ§μŠ€ μ• μ…‹

 

 

3. ν™œμš©

1) 트레이슀 응닡

트레이슀 응닡은 λ ˆμ΄μ €λ₯Ό 곡간에 쏘고 μ½œλΌμ΄λ”μ˜ λ°˜μ‘μ„ ν™•μΈν•¨μœΌλ‘œμ¨ κ²Œμž„μ— μ‚¬μš©ν•˜λŠ” 것이닀. 일반적으둜 λž˜μ΄ 캐슀트 λ˜λŠ” 라인 ν…ŒμŠ€νŠΈλΌκ³ λ„ λΆ€λ₯Έλ‹€.

  • μ‹œμ•Ό 체크: μ–΄λ–€ μΊλ¦­ν„°μ—μ„œ λ‹€λ₯Έ 캐릭터 λ˜λŠ” 지점이 μ‹œμ•Όμ— λ³΄μ΄λŠ”μ§€ 확인할 λ•Œ μ‚¬μš©ν•œλ‹€.
  • 착탄 체크: μ‚¬κ²©ν•œ ν”„λ ˆμž„μœΌλ‘œ 레이λ₯Ό μ΄μ„œ λͺ…쀑 νŒμ •μ„ μˆ˜ν–‰ν•œλ‹€.
  • 차폐 체크: 수λ₯˜νƒ„ 폭발처럼 νŠΉμ •ν•œ λ²”μœ„μ˜ νƒ€κ²©μ—μ„œ 차폐물 λ“±μœΌλ‘œ λͺΈμ„ μ§€μΌ°λŠ”μ§€ νŒλ‹¨ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

 

μ½œλΌμ΄λ”λŠ” 트레이슀 응닡과 객체 λ°˜μ‘ 섀정을 λ”°λ‘œ ν•  수 μžˆλ‹€. 객체 채널과 λ§ˆμ°¬κ°€μ§€λ‘œ 트레이슀 채널을 μ„€μ •ν•˜λ©΄ μ½œλΌμ΄λ”μ—μ„œ 트레이슀 μ±„λ„λ§ˆλ‹€ κ°œλ³„μ μΈ 응닡을 ν•˜λ„λ‘ ν•  수 μžˆλ‹€.

 

Trace Channel

 

2) 트리거

μ˜€λ²„λž©μ„ ν™œμš©ν•˜μ—¬ νŠΉμ • 앑터에 좩돌되면 ν”Œλ ˆμ΄μ–΄κ°€ μ‚¬λ§ν•˜λŠ” 트리거λ₯Ό κ΅¬ν˜„ν•΄ λ³Ό 것이닀.

 

ν”Œλ ˆμ΄μ–΄ 클래슀 λΈ”λ£¨ν”„λ¦°νŠΈμ—λŠ” λŒ€λ―Έμ§€λ₯Ό 받을 λ•Œ μ‹œμž‘λ˜λŠ” 이벀트 λ…Έλ“œμΈ Event AnyDamageλ₯Ό μΆ”κ°€ν•˜μ—¬ λŒ€λ―Έμ§€λ₯Ό 받을 λ•Œ 'Died!'λΌλŠ” 디버그 λ¬Έμžκ°€ 좜λ ₯λ˜λ„λ‘ ν•œλ‹€.

 

Event AnyDamage

 

그리고 레벨 λΈ”λ£¨ν”„λ¦°νŠΈμ—μ„œ OnActorBeginOverlap 이벀트 λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ ν•΄λ‹Ή μ•‘ν„°κ°€ λ‹€λ₯Έ 앑터와 μ˜€λ²„λž©λ  λ•Œ ν˜ΈμΆœλ˜λ„λ‘ ν•œλ‹€. μΆ”κ°€λ‘œ μ•‘μ…˜ λ¦¬μŠ€νŠΈμ—μ„œ λŒ€λ―Έμ§€λ₯Ό μ£ΌλŠ” λͺ…령을 μ„ νƒν•˜μ—¬ ν”Œλ ˆμ΄μ–΄μ— λŒ€λ―Έμ§€λ₯Ό 주도둝 ν•œλ‹€.

μ˜€λ²„λž© μ΄λ²€νŠΈλŠ” 트리거 μ•‘ν„°(Collision)에 마우슀 였λ₯Έμͺ½μ„ ν΄λ¦­ν•œ λ’€ 이벀트 μΆ”κ°€λ₯Ό 톡해 μΆ”κ°€ν•  수 μžˆλ‹€.

 

OnActorBeginOverlap

 

κ²Œμž„μ„ ν”Œλ ˆμ΄ν•΄ 보면 νŠΉμ • 앑터와 좩돌될 λ•Œ 'Died!'λΌλŠ” 디버그 λ¬Έμžκ°€ 좜λ ₯될 것이닀.

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Game/✏ Unreal' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Unreal][C++] 타이머
  • [Unreal] ν”Όμ§μŠ€
  • [Unreal] λΈ”λ£¨ν”„λ¦°νŠΈ
  • [Unreal] 레벨, λ ˆμ΄μ–΄
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[Unreal] μ½œλ¦¬μ „
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”