敌人的,受伤的Action,进入的先决条件是 INJURE 状态为TRUE即可 ![[Pasted image 20240415113753.png]] 后续影响,也是对应设置,INJURE状态为false即可 ![[Pasted image 20240415113856.png]] 对应的动作 Handler 逻辑,只有一个,进入受伤动作的逻辑,打log,然后使用[[await]]异步任务,等待2秒,调用完成回调 ![[Pasted image 20240415114114.png]] 这里是Goal目标的,业务逻辑,脚本合集 ![[Pasted image 20240415114712.png]] 对应的脚本,都是设置优先级 Priority,后续影响Effect,触发条件ActiveCondition,分别是 警戒、攻击、攻击默认状态、受伤 四个Goal目标 ![[Pasted image 20240415114840.png]] ![[Pasted image 20240415114858.png]] ![[Pasted image 20240415115028.png]] ![[Pasted image 20240415115036.png]] 默认的,目标管理器,完成各个目标的添加 ![[Pasted image 20240415115332.png]] 调用的是,目标管理器的AddGoal接口,而且这个接口,是调用了Map映射表的GetGoal接口 ![[Pasted image 20240415115452.png]] 然后,是敌人调用的Map映射,通过AddAction接口,绑定了,动作对应的Hanlder和Action; 通过AddGoal接口,把对应的目标添加到,映射表内,统一的_goalsDic字典容器,进行管理,上述的GoalManager目标管理器,就是在这里调用,拿到对应的goal目标; ![[Pasted image 20240415115210.png]] 还有初始化,设置游戏数据,就跟PlayerMap的相反,自己是Enemy,敌人是Player玩家 ![[Pasted image 20240415120129.png]] 完成各个,默认的子管理器逻辑解析后,开始解析,敌人调用的,总代理CustomAgent脚本逻辑; 默认状态也是,设置默认的IDLE为true,其他为false即可; ![[Pasted image 20240415115820.png]] 然后,是之前调用的,默认映射Map、默认动作管理器、默认目标管理器、默认触发器、默认log管理器的调用、初始化重写 ![[Pasted image 20240415120018.png]] 这是控制玩家游戏内,移动等业务逻辑,相关的脚本,设置角色控制器CharacterController、移动速度,默认是5,还有敌人代理的_enemyAgent声明; 以上,都在Start开始函数,完成初始化赋值即可; ![[Pasted image 20240415120249.png]] Update更新函数,就是调用wasd,进行移动,然后K触发,调用敌人代理的INJURE受伤状态,为true即可 ![[Pasted image 20240415120454.png]] 打好断点 ![[Pasted image 20240415120633.png]] 运行,进入游戏 ![[Pasted image 20240415120648.png]] 敲击K键盘,可以看到堆栈和debug结果,进入断点,是通过Goal目标,被加入到Performer计划队列,再完成触发的 ![[Pasted image 20240415120713.png]] 重新打断点,再进入游戏,可以看到,点击K之后,是会调用BuildPlan接口,完成INJURE的当前目标,添加计划队列 ![[Pasted image 20240415120940.png]] 调用,也就是通过状态的Set接口,一直触发到计划对应的Handler事件脚本逻辑,对应的NextAction接口,其中只包含一个Injure的Handler受伤事件 ![[Pasted image 20240415121208.png]] 重新运行游戏,移动玩家,让两者距离缩短,触发器被触发了,可以看到,是敌人的Root脚本,调用了FrameFun帧函数; 继而调用到TriggerEyes触发器,让敌人面向玩家; ![[Pasted image 20240415121750.png]] 点击运行,可以看到,玩家对应的PlayerRoot脚本,也是通过FrameFun帧函数,调用了TriggerEyes触发器,让玩家面向敌人; 敌人和玩家,共享了同一触发器,逻辑正常; ![[Pasted image 20240415122027.png]] 运行游戏,两者面对面,表现正常 ![[Pasted image 20240415122248.png]]