38. 敌人的动画执行逻辑
1.02. 创建房间的 Prefab2.03. 设计地图配置表3.04. 生成地图上的房间4.07. 泛型事件框架5.08. 场景加载6.09. 保存地图场景7.10. 房间进出逻辑8.11. 制作卡牌 Prefab9.12. 创建卡牌数据类10.13. 对象池11.14. 制作卡牌库实现抽卡12.15. 创建卡牌布局13.16. 抽卡动画14.17. 实现卡牌扇形布局15.18. 实现鼠标事件16.19. 卡牌拖拽17.20. 攻击牌的拖拽指针18.21. 实现洗牌逻辑19.22. 导入Spine人物素材20.23. 人物基类代码21.24. 执行卡牌效果22.25. 制作血条的 UI Document23.26. 绑定血条数据24.27. 创建USS血条样式25.28. 制作 Gameplay Panel26.29. 绑定 Gameplay Panel 数据27.30. 回合转换28.31. 出牌能量判断29.32. 防御牌及 UI30.33. 回血的苹果牌及特效31.34. 增加力量牌及 UI32.35. 更多卡牌33.36. 人物动画34.37. 敌人意图 AI 逻辑
35.38. 敌人的动画执行逻辑
36.39. 对战胜负逻辑37.40. 制作胜利和抽卡面板38.41. 抽卡面板的实际逻辑39.42. GameOver 及 Menu 面板40.43. 实现休息房间的逻辑41.44. Boss 制作和整体流程42.45. 淡入淡出及打包游戏本节目标
上节只是把逻辑写好了,为了让游戏看起来更好看,我们需要将敌人的动画也加上去
实现
动画状态机
敌人的状态比较简单,只有站立、加Buff、攻击、受伤、死亡这五种状态
各状态之间的转换关系如下
站立 -> 加 Buff
通过 skill 触发,立刻执行
因为是从 Any State 出来的,所以不需要 Can Transtion To Self
站立 -> 攻击
通过 attack 触发,立刻执行
因为是从 Any State 出发,所以不用勾选 Can Transtion To Self
站立 -> 受伤
通过 hit 触发,立刻执行
因为是从 Any State 出发,所以不用勾选 Can Transtion To Self
站立 -> 死亡
通过 isDead = true 触发,立刻执行
因为是从 Any State 出发,所以不用勾选 Can Transtion To Self
加 Buff -> 站立
完整播放完一次动画后执行
攻击 -> 站立
完整播放完一次动画后执行
受伤到站立
完整播放完一次动画后执行
通过代码播放加 Buff 和攻击动画
如上图所示,当敌人回合开始的时候,会判断一下执行的目标,如果是自己的话就执行 skill,如果是目标的话就执行 attack
这里使用协程来播放动画,原因是敌人动画需要播放到 60% 的时候才能显示实际扣血或者加的buff效果。又学到了一个新的协程等待的办法
通过代码播放受伤动画
通过代码播放死亡动画
修复伤害不太正确的问题
之前打出的伤害,没有考虑buff效果,需要修改下面的地方进行修正
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?