MonsterControllelr 에서 State Dead 사용
106
작성한 질문수 5
MonsterController 에서 질문 있습니다.
protected virtual void UpdateDead()
{
OnDead();
}
public override void OnDamaged(BaseController attacker, int damage)
{
if (Hp <= 0)
return;
Hp -= damage;
if (Hp <= 0)
{
Hp = 0;
// 왜 ? 스테이트로 했을때는 버그가 있는거지?
_creatureState = Define.CreatureState.Dead;
// OnDead();
}
}위와 같이 MonsterController 에서 OnDead() 대신에 State 로 작성을 하면 데미지를 입지 않은 몬스터도 죽어버립니다. 왜 그렇게 되는지 잘 모르겠는데 설명 부탁 드립니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
고양이조아요님, 질문해주신 사항에 관해 설명드리겠습니다.
현재 제공해 주신 코드에서 문제가 발생하는 부분은 CreatureState를 변경하는 로직에 위치할 가능성이 큽니다. OnDead() 메서드를 호출하는 대신 상태를 변경하는 코드로 작성했을 경우, 데미지를 입지 않은 몬스터도 죽어버린다고 하셨는데 이는 UpdateDead() 메서드가 특정 조건에서 계속해서 호출되고 있을 가능성을 제기할 수 있습니다.
다음과 같은 원인들을 생각해볼 수 있습니다:
State Management의 문제:
_creatureState가Dead로 변경되고 나면,UpdateDead()가 계속 호출되면서OnDead()가 반복적으로 실행될 수 있습니다. 이는 상태가Dead로 변경된 모든 몬스터에 영향이 미칠 수 있습니다. 이러한 문제를 방지하기 위해서는 상태 변경이 정확하게 해당 조건에서만 발생하도록 하는 추가적인 로직이 필요할 수 있습니다.
Update 메서드의 호출 조건:
Update()함수는 매 프레임마다 호출 되는데, 상태가 지속적으로Dead로 설정된다면UpdateDead()가 불필요하게 호출될 가능성이 있습니다. 상태 변화를 감지하고 이를 한 번만 적용하기 위한 플래그 변수나 추가적인 조건이 필요할 것입니다.
상태변경 시점의 문제:
- 상태 변경과 관련된 다른 부분에서의 코드가 잘못 구현되어 있을 수 있습니다. 데미지를 받아 죽어야 할 몬스터에 대한 로직이 아니라, 다른 상황에서도
_creatureState가 부적절하게Dead로 설정될 수 있는 가능성을 염두에 두고 전체적인 로직을 점검해보는 것이 좋습니다.
- 상태 변경과 관련된 다른 부분에서의 코드가 잘못 구현되어 있을 수 있습니다. 데미지를 받아 죽어야 할 몬스터에 대한 로직이 아니라, 다른 상황에서도
보다 구체적인 원인은 코드의 나머지 부분도 함께 검토해야 더 정확한 분석이 가능할 것입니다. 혹시 관련 추가 코드나 로직을 공유해주신다면 좀 더 상세히 도와드리겠습니다. 도움이 되셨길 바랍니다!
추가적으로, Spring Boot 문서에서의 문의사항이라면, 제공되는 링크에서 자세한 내용들을 확인하실 수 있습니다:
- Spring Boot Liveness State 관련 문서
- Spring Boot Kubernetes Probes 관련 문서
Addressables로 등록한 Slice된 Sprite의 하위 Sprite 접근법에 대해 질문드립니다
0
85
1
유니티 데이터 저장객체 ScriptableObject에 대해 의견 여쭤보고 싶습니다
0
141
2
안녕하세요 선생님 공부중에 궁금한게 있어서 질문 드려요
0
65
1
상속 구조에서의 awake흐름 및 init 함수 질문있습니다
0
85
1
젬 스프라이트가 로딩되지 않습니다.
0
116
1
혹시 스프라이트 드래그 앤 드롭으로 애니메이션 생성할 때
0
122
1
init() 2번 실행? 등 스킬 마무리 강의에서 질문 있습니다.
0
168
2
Managers.Object.Player와 Mangers.Game.Player 차이
0
112
1
상업적 출시에 대한 질문입니다.
0
169
1
EquipmentData 관련해서 질문드립니다
0
117
1
Data관리 관련해서 질문드립니다.
0
169
2
안드로이드 빌드에서는 LoadAllAsync , LoadAsync 가 동작 하지 않고 있습니다.
0
240
2
Instantiate 관련 질문 드립니다
0
158
1
포트폴리오 문서작성에 있어서 질문드립니다.
0
593
2
UI 연동방식에 대해서 질문드립니다.
0
181
1
인디게임출시경험이 중요할까요?
1
346
1
Coroutine과 uniTask 질문드립니다.
0
240
1
ResourceManager 메서드 역할
0
221
1
스프라이트 자료
1
181
1
xml 에
0
268
2
UI 리소스 사용문의
0
270
1
폴더 이름 제일 앞에 @를 붙이는 이유가 궁굼해요
0
594
2
3.:43 초 때부터 잘 안되는 것 같습니다...
0
328
1
어드레서블 관련 궁금한 점이 있습니다
0
395
1





