오늘의 TIL
- Unity에서 ActiveSkill의 OnPlayer 타입 처리 개선
- 문제: OnPlayer 타입의 액티브 스킬이 적에게 데미지를 적용하지 않는 문제가 발생.
- 원인: PlayerSkillHandler에서 OnPlayer 타입 스킬이 발동될 때, 적 탐지는 했지만 데미지 전달 로직이 누락되어 있음.
- 해결: HandleSkillUsed 메서드에서 OnPlayer 타입 스킬이 발동되면, Physics2D.OverlapCircleAll로 탐지된 적들에게 데미지를 적용하도록 수정.
- 코루틴에서 비활성화된 오브젝트 문제
- 문제: 적이 죽을 때 Coroutine couldn't be started because the the game object 'Enemy' is inactive! 오류 발생.
- 원인: 코루틴 실행 중 오브젝트가 ObjectPool로 반환되면서 비활성화된 상태에서 코루틴이 호출됨.
- 해결: Enemy 클래스에서 isDead 플래그를 추가해 Die 메서드가 여러 번 호출되지 않도록 수정.
- 스킬 발동 후 애니메이션 및 상태 관리
- 스킬 발동 시 공격 애니메이션을 강제로 실행 후, 일정 시간 대기 후 상태를 Idle로 복귀.
- HandleSkillUsed에서 스킬 발동 로직에 따라 State를 Skill로 변경하고, ResetToIdleAfterSkill 코루틴을 활용해 자연스럽게 상태 전환.
- Object Pool 활용
- 적 오브젝트가 사망 후 Object Pool로 반환되도록 구현.
- StartCoroutine을 통해 반환 전 대기 시간을 두었고, 반환 중 오류 발생 시 비활성화 상태를 고려해 로직 보완.
- Debugging 및 테스트
- 스킬 발동 위치 및 범위 확인.
- HandleSkillUsed와 PlayerSkillHandler의 이벤트 연동 문제를 디버깅하며 올바른 트리거 호출을 확인.
- Object Pool 동작 및 Enemy 반환 시점에서 발생 가능한 에러를 확인하고 수정.
배운 점:
Unity에서 Object Pool을 사용할 때 코루틴과 오브젝트 활성화 상태를 신경 써야 하며, 특정 이벤트 로직이 의도대로 실행되지 않을 경우 관련 메서드와 이벤트 호출 관계를 꼼꼼히 디버깅하는 것이 중요함. 스킬 처리와 애니메이션 동기화를 위해 상태 전환과 트리거 초기화가 핵심임을 깨달음.
오늘의 작업이 스킬 처리와 적 로직에 대한 더 깊은 이해를 도왔습니다.
'TIL(Today I Learned) > 오늘 무엇을 배웠을까' 카테고리의 다른 글
TIL(Today I Learned) - 72 (0) | 2025.01.02 |
---|---|
TIL(Today I Learned) - 71 (0) | 2024.12.31 |
TIL(Today I Learned) - 69 (0) | 2024.12.27 |
TIL(Today I Learned) - 68 (0) | 2024.12.26 |
TIL(Today I Learned) - 67 (0) | 2024.12.24 |