진행한 것들
보스 Behaviour Tree와 애니메이션 연결
보스의 패트롤과 공격 부분을 애니메이션과 연결했습니다.
오늘의 이슈 / 내일 할 것
오늘 이슈
- 어제 한 BehaviourTree의 SetTree부분이 논리적으로 잘못 되어 다시 작성
https://jcdevelop98.tistory.com/379
public Dictionary<BTValues, object> BTDict { get; private set; } = new Dictionary<BTValues, object>();
private void Awake()
{
_rigid = GetComponent<Rigidbody>();
StatHandler = new EnemyStatHandler(enemySO, null, null);
AnimationController = GetComponentInChildren<BossAnimationController>();
AnimationController.Init();
}
protected override Node SetTree()
{
InitBTDict();
Node root = new Selector(new List<Node>
{
new Sequence(new List<Node>
{
new RunningCoolTimeNode(this),
new CheckHpNode(this, PhaseSO.PhaseInfo.Length),
new UpdatePhaseNode(this),
new PatrolNode(this, _rigid, waypoints),
new Selector(new List<Node>
{
new Sequence(new List<Node>
{
new CheckSkillCoolTimeNode(this),
new UseSkillNode(this)
}),
new ShootNode(this, GameManager.Instance.PlayerTransform ,5)
}),
}),
new DieNode()
});
return root;
}
public void SetCurrenPhase(int currentPhase)
{
CurrentPhase = currentPhase;
}
private void InitBTDict()
{
if (!BTDict.ContainsKey(BTValues.CurrentPhaseSkillCoolTime))
BTDict.Add(BTValues.CurrentPhaseSkillCoolTime, 0f);
if (!BTDict.ContainsKey(BTValues.WasSkillUsed))
BTDict.Add(BTValues.WasSkillUsed, false);
if (!BTDict.ContainsKey(BTValues.CurrentSkillElapsedTime))
BTDict.Add(BTValues.CurrentSkillElapsedTime, 0f);
if (!BTDict.ContainsKey(BTValues.IsAnyActionPlaying))
BTDict.Add(BTValues.IsAnyActionPlaying, false);
}
문제점
이전에선 UseSkillNode 상태에 들어가지 못하는 버그가 있었음
원인
이전의 첫 번째 Sequence 부분에서 Failure 상태라면 바로 Root까지 반환하게 됨
해결
UseSkillNode과 ShootNode 상태를 SelectNode와 함께 CheckSkillCoolTimeNode로 판별하여 결과에 따라 하나를 수행하도록 함
추가 변경 사항
- 쿨타임 더하는 부분 로직 계산 부분 분리
- BTDict라는 딕셔너리를 만들어 여러 곳에서 쓰이는 변수들 저장
내일 할 것
- 애니메이션 버그 고치기(자꾸 두리번거림)
- 페이즈 1 스킬 구현 (폭탄 던지기)
오늘의 회고
오늘은 보스 행동트리에 맞춰서 애니메이션을 적용하였다. 애니메이션 적용하는 것은 어렵지 않았지만 쿨타임을 계산한다던가 하는 부분을 위해 따로 BehaviourTree에서 프로퍼티로 접근할 딕셔너리를 만들기도 했다. 내일은 애니메이션 버그와 페이즈 1 스킬을 구현할 생각이다. 내일도 파이팅!
'스파르타 Unity 1기' 카테고리의 다른 글
DevLog - 이그라엘(IGRAL) Behaviour Tree 재구성 (0) | 2023.11.25 |
---|---|
DevLog - 이그라엘(IGRAL) Phase2 스킬 구현 (1) | 2023.11.23 |
DevLog - 이그라엘(IGRAL) Behaviour Tree와 SelectorNode (1) | 2023.11.21 |
DevLog - 이그라엘(IGRAL) Behaviour Tree와 Sequence Node (0) | 2023.11.20 |
DevLog - 이그라엘(IGRAL) 변이 효과 UI 연결 (0) | 2023.11.17 |