文章目录
  1. 1. 主要的类
    1. 1.1. IBehaviorScheduler
    2. 1.2. BehaviorScheduler
    3. 1.3. PlayerActionExecutor
    4. 1.4. PlayerAIExecutor
    5. 1.5. BallActionExecutor
    6. 1.6. CoachSkillEventConsumer
    7. 1.7. MatchEventConsumer
    8. 1.8. TeamStateManager
    9. 1.9. GameHub
    10. 1.10. Action
    11. 1.11. DottedLine 划线击球射门
    12. 1.12. AthleteLabels 头顶板
    13. 1.13. TimeLine 时间控制,暂停,运行,挂起
    14. 1.14. DataProvider
  2. 2. 一些约定
  3. 3. 配置文件
    1. 3.1. AI中Lua部分

主要的类

IBehaviorScheduler

BehaviorScheduler

  • 驱动PlayerActionExecutor,PlayerAIExecutor,BallActionExecutor,CoachSkillEventConsumer,MatchEventConsumer的Update,LateUpdate,FixedUpdate

    PlayerActionExecutor

  • 每个队员身上都会挂一个该脚本,并在Start()中,向GameHub注册自己
  • 驱动:BallActionHandler,PlayerStateHandler,PlayerTransformHandler,ExtraTimeActionExecutor
  • PlayerStateHandler
    1. 持有ActionBuffer
    2. 触发NotifyNewActionStart事件
    3. 有三态
      • Stop 当前没有动作运行中
      • Running 当前有动作在运行中,此状态下,如果发现需中断,则查看自身动作是否为休闲状态或者动画是否播完,如果满足则响应中断。
      • TakeOverByOthers 受到外部中断指令,指示现在角色动作由外部接管,不再产生自主行为
  • IKHandler
    1. 控制守门员救球时的反向动力学
    2. 主要方法:OnNewSaveActionStart
  • BallActionHandler
    1. 用来响应击球事件,并产生相应动作交与BallActionExcutor
    2. 输入为Action(Player动作),输出为BallAction(BallActionExutor动作)

      PlayerAIExecutor

  • 每个队员身上都会挂一个该脚本,并在Start()中,向GameHub注册自己
  • 主要工作交给PlayerHeadHandler和PlayerUpperBodyHandler来做
  • PlayerHeadHandler
  • PlayerUpperBodyHandler

    BallActionExecutor

  • 控制球动作
  • BallActionHandler 用来响应击球事件,并产生相应动作交与BallActionExcutor。每个队员身上都有一个BallActionHandler。
  • 这个组件是挂在球上面的
    -

    CoachSkillEventConsumer

    MatchEventConsumer

    TeamStateManager

    GameHub

  1. 拥有双方队员的Animator组件
  2. 动作与AI调度器
  3. Start()-> 发出 onMatchStart 事件
  4. RegisterPlayerAIExecutor 注册PlayerAIExecutor
  5. RegisterPlayer 注册队员的Transform,Animator及ActionExecutor
  6. RegisterPlayerAIExecutor 注册PlayerAIExcutor
  7. 作用:
    • 管理比赛过程,比如比赛开始流程
    • 驱动BehaviorScheduler
    • HandleMatchEvent 广播比赛特殊事件,如比赛开始,开球,比赛结束等
    • 管理队员

      Action

      DottedLine 划线击球射门

      AthleteLabels 头顶板

      TimeLine 时间控制,暂停,运行,挂起

  8. 冻结队员动作的实现方法:设置所有队员的动画组件的speed属性为0
  9. 挂起会冻结队员动作,挂起结束后会解冻队员,并恢复上一个时间状态
  10. 暂停

    • TLUnfreeze()与TLFreeze()
    • 还会更新当前时间,但使用TLMatchTime()将得到暂停的起始时刻,其它状态下,该方法得到的是当前时间
  11. 系统级暂停,StopTimeProceed()与ResumeTimeProceed(),对Time.timeScale进行设置

DataProvider

  • 提供比赛事件存储队列matchKeyFrameQueue
    此队列中的事件由MatchEventConsumer单例处理,MatchEventConsumer调用GameHub的HandleMatchEvent将事件广播给所有的队员
    比赛特殊事件,比如开球,正常比赛,点球,罚球,比赛结束等

一些约定

  • 双方队员编号,0-10,11-21
  • 0与11是守门员

配置文件

  • Assets/CapstonesRes/Game/Config => /res/res_Game_Config/CAB-res_Game_Config
  • # 开头的是注释
  • 一行一条记录
  • ActionAttributes.txt

    • 作用:每个动作的长度,及触球相关参数
    • 加载类:ActionAttributeLoader 用于解析动画相关属性,并提供Get接口
    • 按#分隔字段
    • 第一行为字段名字
      clip_name clip_offset clip_duration clip_rotation ( first_touch_ball_offset first_touch_ball_duration first_touch_ball_player_offset last_touch_ball_offset last_touch_ball_duration )
      • clip_offset 是Vector3
      • clip_rotation 是Vector4
    • 前四个字段是必须的,数据项要么是4个字段的,要么是9个字段的,其它数量的字段都是非法数据项
    • clip_name的第一个字母是用意义的
      • 3_1, A-Z 并且不是A01或T
  • ActionConfig.txt

    • 作用:逻辑动作对应的动画,是一对多的关系
    • 加载类:ActionConfig
    • 两个字段
      • 第一个字段是逻辑动作名字
      • 第二个字段是具体动画名字,相应的动画在ActionAttribute中都有配置,以,分隔
  • PlayerAction, PlayerTransform

    • PlayerAction作用:每个Player自已所能做的动作 ?
    • PlayerTransfrom
      • 作用:每个Player的初始位置与面向
      • 所有数据都在一行上,记录以#分隔,记录内以;分隔,每条记录有3项
    • 加载类:PlayerActionLoader
  • ActionMergeInfo

    • 作用:动作混合
    • 三个字段
      • 动作状态
      • 条件

AI中Lua部分

  • 估计是用行为树
  • AI脚本位置:zcfy/spt/emulator
    -
文章目录
  1. 1. 主要的类
    1. 1.1. IBehaviorScheduler
    2. 1.2. BehaviorScheduler
    3. 1.3. PlayerActionExecutor
    4. 1.4. PlayerAIExecutor
    5. 1.5. BallActionExecutor
    6. 1.6. CoachSkillEventConsumer
    7. 1.7. MatchEventConsumer
    8. 1.8. TeamStateManager
    9. 1.9. GameHub
    10. 1.10. Action
    11. 1.11. DottedLine 划线击球射门
    12. 1.12. AthleteLabels 头顶板
    13. 1.13. TimeLine 时间控制,暂停,运行,挂起
    14. 1.14. DataProvider
  2. 2. 一些约定
  3. 3. 配置文件
    1. 3.1. AI中Lua部分