πŸ€– μƒνƒœ λ¨Έμ‹ μœΌλ‘œ 적 AI κ΅¬ν˜„ – κ²Œμž„ 캐릭터 λ˜‘λ˜‘ν•˜κ²Œ λ§Œλ“€κΈ°

 κ²Œμž„μ—μ„œ 적 캐릭터가 λ‹¨μˆœνžˆ μ™”λ‹€ κ°”λ‹€λ§Œ ν•˜λŠ” 게 μ•„λ‹ˆλΌ, ν”Œλ ˆμ΄μ–΄λ₯Ό μ«“κ±°λ‚˜ κ³΅κ²©ν•˜κ³  λ„λ§μΉ˜λŠ” 행동을 보여주면 훨씬 μžμ—°μŠ€λŸ½λ‹€.

이런 행동 νŒ¨ν„΄μ„ κ΅¬ν˜„ν•  λ•Œ **μƒνƒœ λ¨Έμ‹ (State Machine)**이 핡심이닀.


1. μƒνƒœ λ¨Έμ‹ (State Machine) κ°œλ…

  • 객체가 κ°€μ§ˆ 수 μžˆλŠ” μƒνƒœ(State)와 μ „ν™˜(Transition) ꡬ쑰

  • μƒνƒœλ§ˆλ‹€ 행동을 μ •μ˜ν•˜κ³ , 쑰건이 되면 λ‹€λ₯Έ μƒνƒœλ‘œ 이동

  • μ˜ˆμ‹œ: 적 캐릭터

    • Idle (λŒ€κΈ°)

    • Patrol (순찰)

    • Chase (좔격)

    • Attack (곡격)


2. μƒνƒœ λ¨Έμ‹  κ·Έλ¦Ό

Idle → Patrol → Chase → Attack ↑ ↓ ← ← ← ← ← ← ← ← ← ← ← ← ←
  • Idle → Patrol: 일정 μ‹œκ°„ ν›„

  • Patrol → Chase: ν”Œλ ˆμ΄μ–΄ 발견 μ‹œ

  • Chase → Attack: 곡격 λ²”μœ„ μ§„μž… μ‹œ

  • Attack → Idle/Patrol: ν”Œλ ˆμ΄μ–΄ λ©€μ–΄μ§€λ©΄


3. Unity C# 예제

public enum EnemyState { Idle, Patrol, Chase, Attack } public EnemyState currentState = EnemyState.Idle; void Update() { switch(currentState) { case EnemyState.Idle: Idle(); break; case EnemyState.Patrol: Patrol(); break; case EnemyState.Chase: Chase(); break; case EnemyState.Attack: Attack(); break; } } void Idle() { // λŒ€κΈ° 행동 if(playerInSight) currentState = EnemyState.Chase; } void Patrol() { // 순찰 행동 if(playerInSight) currentState = EnemyState.Chase; } void Chase() { // ν”Œλ ˆμ΄μ–΄ 좔격 if(inAttackRange) currentState = EnemyState.Attack; } void Attack() { // 곡격 행동 if(!inAttackRange) currentState = EnemyState.Patrol; }

4. μƒνƒœ λ¨Έμ‹  ν™œμš© 팁

  • ν–‰λ™λ§ˆλ‹€ μ½”λ“œλ₯Ό λ‚˜λˆ„λ©΄ 가독성↑ μœ μ§€λ³΄μˆ˜↑

  • μ „ν™˜ 쑰건(Trigger)을 λͺ…ν™•νžˆ → AI 행동 예츑 κ°€λŠ₯

  • λ³΅μž‘ν•œ AIλŠ” 계측적 μƒνƒœ λ¨Έμ‹ (Hierarchical State Machine) 적용 κ°€λŠ₯


5. 마무리

μƒνƒœ 머신을 ν™œμš©ν•˜λ©΄,

  • λ‹¨μˆœ 이동 AI → 상황에 따라 λ‹€λ₯΄κ²Œ 행동

  • ν”Œλ ˆμ΄μ–΄ κ²½ν—˜ ν–₯상

  • κ²Œμž„ λ‚œμ΄λ„ 쑰절 용이

λ‹€μŒ κΈ€μ—μ„œλŠ” Object Pooling으둜 κ²Œμž„ μ΅œμ ν™”λ₯Ό 닀뀄, λ‹€μˆ˜ 적과 νˆ¬μ‚¬μ²΄κ°€ μžˆμ„ λ•Œ μ„±λŠ₯을 μ•ˆμ •μ μœΌλ‘œ μœ μ§€ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² λ‹€.

λŒ“κΈ€

이 λΈ”λ‘œκ·Έμ˜ 인기 κ²Œμ‹œλ¬Ό

πŸš€ λ©€ν‹°ν”Œλ ˆμ΄μ–΄ κ²Œμž„ μ΅œμ ν™”μ™€ μ„±λŠ₯ νŠœλ‹ – λΆ€λ“œλŸ¬μš΄ κ²Œμž„ ν”Œλ ˆμ΄ κ΅¬ν˜„

⚔️ λ©€ν‹°ν”Œλ ˆμ΄μ–΄ μŠ€ν‚¬/μ•„μ΄ν…œ 동기화 – μ‹€μ‹œκ°„ μ „νˆ¬ κ΅¬ν˜„

🎬 λ©€ν‹°ν”Œλ ˆμ΄μ–΄ λ¦¬ν”Œλ ˆμ΄ μ‹œμŠ€ν…œ κ΅¬ν˜„ – κ²Œμž„ ν”Œλ ˆμ΄ 녹화와 μž¬μƒ