Unity - 몬스터 모드 변경
2024. 7. 11. 20:48ㆍUnity/Unity 학습정리
파트너 몬스터가 플레이어를 따라다닐 때, 적 몬스터를 만나면 공격한다. 하지만 그걸 원하지 않을 때가 있는데 NonCombat모드랑, Combat모드를 구분해서 FSM을 조절하는 것을 구현 해봤다.
ActionModeHandler.cs
public enum AcitonMode
{
NonCombat,
Combat,
Count
}
/// <summary>
/// 현재 액션 상태를 다루고 다음 액션으로 넘어가게 하는 핸들러
/// </summary>
public class ActionModeHandler
{
private AcitonMode _curMode;
public event Action OnChangedMode;
public ActionModeHandler()
{
_curMode = AcitonMode.NonCombat;
}
public AcitonMode GetActionMode()
{
return _curMode;
}
public void CallModeChangeEvent()
{
OnChangedMode?.Invoke();
}
public void ChangeActionMode()
{
_curMode += 1;
if (_curMode == AcitonMode.Count)
{
_curMode = 0;
CallModeChangeEvent();
return;
}
CallModeChangeEvent();
return;
}
}
- 모드가 버튼식이기 때문에 버튼을 누를 때 마다 다음 모드로 넘어가게 구현
- 현재는 NonCombat, Combat모드 두 개를 넣어놨음
- enum에 Count를 통해 모드가 끝까지 간다면 다시 처음으로 되돌리도록 구현
- 나중에 UI를통해 여러모드중 하나를 고르게 할 수 도 있도록 구현
- PartnerMonsterIdleState,PartnerMonsterWalkState
- 파트너 몬스터만 해당 핸들러를 사용
- 파트너 몬스터에서 Chasing을 가는것을 해당 두 State이고, 이 State에서 벗어나지만 않으면 전투 모드로 들어갈 수 없음
- 해당 State의 전이 조건에서 ActionMode를 확인해 NonCombat이면 전투로 아예 넘어가지 못하도록 함
'Unity > Unity 학습정리' 카테고리의 다른 글
Unity - Interface로 원하는 동작 해보기 (0) | 2024.07.10 |
---|---|
플레이어를 쫓아다니는 몬스터 AI 구현 (0) | 2024.07.04 |
FSM StateMachine 상속 (0) | 2024.07.01 |
Unity - Behaviour Tree (1) (0) | 2024.06.25 |
Unity - FSM(Finite State Machine)(3) (0) | 2024.06.20 |