
어제는 기본 action으로 idel과 die만 구성했다.
INode SettingBT()
{
return new SelectorNode
(
new List<INode>()
{
new SelectorNode
(
new ConditionNode(() => bossHP <= 0, new ActionNode(BossDie)),
new ActionNode(BossIdle)
}
);
}
ConditionNode 클래스 추가
public sealed class ConditionNode : INode
{
INode _onSuccessNode;
Func<bool> _condition;
public ConditionNode(Func<bool> condition, INode onSuccessNode)
{
_condition = condition;
_onSuccessNode = onSuccessNode;
}
public INode.ENodeState Evaluate()
{
if (_condition.Invoke())
{
return _onSuccessNode.Evaluate();
}
else
{
return INode.ENodeState.Failure;
}
}
}
그리고 오늘..
BossHit은 패링시스템이라 먼저 보스의 공격 액션을 구성하고 타이핑을 해봐야할거같아서 BossTrack을 먼저 구현했다.
BossTrack은 플레이어가 몬스터의 인식 영역으로 들어오면 walk 애니메이션이 재생된다.
그런데 이걸 ConditionNode에 조건으로 어떻게 넣을것인지 고민해야했다.
참고한 블로그에서는 ENodeState의 action에 조건까지 작성해서 반환해줬는데 난감해졌다.
일딴 참고해서 BossTrack을 구성했다.
그리고 잘 생각해보니 BossAttack의 범위에 들어오면 BossTrack보다 먼저 재생되어야하니 트리구조 변경을 했다.


애니메이션이 부드럽게 재생되지 않는다.
이거는 추후 애니메이션 블랜딩트리로 구성해보겠다.