MEGALOVANIA MEGALOVANIA

游戏开发中

目录
CKPA开发日志 其九
/      

CKPA开发日志 其九

工作日志

  • 把代码拆解了下,原来臃肿的 ActionMgr 现在只有一小部分代码了.拆解出来的部分如下:
    • Action 以及其继承类单独一个文件
    • ActionEnergyMgr 用来管理能量
    • ActionFrameRecorder 用来处理记录 Frame 的功能
    • ActorNPCAIMgr 用来给 NPC 计划行动任务
    • 全局拆了一个 GizmoMgr 用来处理显示角色的路径以及攻击
    • 把 Testing 里的 GridMgr 拆出来了
  • 代码上,把 ActorAction 的 Execute 改成了 Async task,这样可以方便地做队列动画,代码可以写成这样
1while (!IsAllActionDone())
2{
3    var action = _actorActions[currentIdx];
4
5    await action.Execute();
6  
7    currentIdx++;
8}
  • 然后 Execute 方法里只需要这样写:
1public override async UniTask Execute(Action<ActorAction> callback = null)
2{
3    handler.transform.parent.rotation = rotation;
4    handler.PerformAttack(this);
5
6    await UniTask.WaitUntil(()=>handler._animMgr.GetCurrentMontageTime()>=1.0f);
7
8    isComplete = true;
9}
  • 暂停的话需要想办法让当前正在执行的 Action 停下来,对于 MoveAction,Pause 那个 DOTween 就可以;对于 Attack 这种 Montage 动画,需要让 Montage 进入暂停状态

  • 拆解重新构建逻辑之后,现在的逻辑变成了:

    • 游戏开始,1s 之后,NPC 规划路径
    • 玩家规划路径,行动开始
    • 执行每个角色的规划队列,直到玩家的规划队列执行完毕,这时候 NPC 会有两种情况:
      • NPC 已经执行完毕自己的队列,那么这时候会停在那里等待玩家完成操作
      • NPC 还没执行完毕,那么会在那一刻暂停
  • 需要优化的逻辑部分:

    • 每次回合结束以后都会规划路径,但是原有的路径不会取消,这其实有点奇怪
    • 当 NPC 已经执行完毕自己的行动的时候,会等待玩家执行完毕,这也不太合理
    • 玩家的武器伤害判定不是非常合理,在动画停止或者动画加速的这种情况下,动画可能没办法正确地触发 OnTriggerEnter
    • 有时候还是会有一些 Bug,角色会卡住,目前原因不明,似乎跟行动距离太长有关系

    • 可能有飞行道具以后这个游戏会变得更好玩一点
    • 之前想的那套出招-收招打差和的游戏,感觉不是很靠谱,主要是目前看看游戏没有那么细致的操作
    • 是否要有打到路径上的敌人之后将他们路径打断的功能

优化事项

  • 需要先想好核心的玩法的目标需求,不然感觉现在做起来只是在对齐代码 有点混乱

今日目标

  • 今天应该会和小伙伴商量一下这个项目,征兆了一个伙伴
  • 好好想想接下来的需求该怎么做

标题:CKPA开发日志 其九
作者:matengli110
地址:https://www.sunsgo.world/articles/2024/03/31/1711869344941.html