currentSubgoal
是CompositeGoal
类中的一个属性,用于表示当前正在执行的子目标。
CompositeGoal
类是一个组合目标类,用于将多个子目标组合起来形成一个大目标。在执行CompositeGoal
的Activate()
方法时,currentSubgoal
属性会被设置为第一个子目标。当子目标执行完成后,currentSubgoal
会被设置为下一个子目标,直到所有子目标都执行完毕。
如果CompositeGoal
类的Process()
方法被调用,则会先检查当前子目标是否已完成。如果未完成,则会继续执行当前子目标。如果已完成,则会将currentSubgoal
设置为下一个子目标并执行它。当所有子目标都完成后,CompositeGoal
的Process()
方法也会返回completed
状态。
currentSubgoal
是一个Goal
类对象,具有Activate()
、Process()
和Terminate()
方法。它的作用是将子目标集成到CompositeGoal
中,以便执行大目标。
使用currentSubgoal
属性可以获取当前正在执行的子目标。也可以使用它来设置子目标,例如在执行当前子目标时发生错误,可以将currentSubgoal
设置为同级或下一级子目标重新执行。
const compositeGoal = new yuka.CompositeGoal(entity, 'attackEnemies', 1);
// 添加子目标
const subGoal1 = new yuka.GoToEntityGoal(entity, enemy1);
const subGoal2 = new yuka.AttackEntityGoal(entity, enemy1);
const subGoal3 = new yuka.GoToEntityGoal(entity, enemy2);
const subGoal4 = new yuka.AttackEntityGoal(entity, enemy2);
compositeGoal.addChildGoal(subGoal1);
compositeGoal.addChildGoal(subGoal2);
compositeGoal.addChildGoal(subGoal3);
compositeGoal.addChildGoal(subGoal4);
// 执行子目标
compositeGoal.activate();
// 获取当前执行的子目标
const currentSubgoal = compositeGoal.currentSubgoal;
// 设置下一个子目标
compositeGoal.currentSubgoal = subGoal3;