36. 人物动画

人物动画状态机

设置变量

isParry	是否在防御
isSleep	是否正在睡觉
isDead	是否已经死亡
attack	攻击
hit		受伤
skill	技能

状态

stand			站立
parry_stand		防御
hurt			受伤
attack_pillow	攻击
sleep			睡眠
wake			醒来
skill			技能
death			死亡

状态切换

站立状态可以切换到防御、攻击、睡眠、技能

防御状态可以切换到站立、受伤、死亡

受伤状态可以切换到防御、睡眠

攻击状态可以切换到站立

睡眠状态可以切换到受伤、醒来、死亡

醒来状态可以切换到站立

技能状态可以切换到站立

变量与状态切换

站立 -> 防御

isParry = true

站立 -> 攻击

触发 attack

站立 -> 睡眠

isSleep = true

站立 -> 技能

触发 skill

防御 -> 站立

isParry = false

防御 -> 受伤

触发 hurt

防御 -> 死亡

isDead = true

受伤 -> 防御

isParry = true,要完整播放完受伤动画

受伤 -> 睡眠

isSleep = true,要完整播放完受伤动画

攻击 -> 站立

播放完动画就能回到站立状态

睡眠 -> 受伤

触发 hit

睡眠 -> 醒来

isSleep = false

醒来 -> 站立

播完动画

技能 -> 站立

代码控制

添加PlayerAnimation,并把它绑定到 Player 上面

默认情况下进入 sleep 状态

玩家回合开始进入 stand 状态

玩家回合结束根据防御值进入不同状态

如果防御值大于0,则进入防御状态,否则进入睡眠状态

玩家攻击和技能动画

监听状态调用相应方法

在回合开始的事件中调用 PlayerTurnBeginAnimation

在回合结束的事件中调用 PlayerTurnEndAnimation

在丢弃了卡牌的时候调用 OnPlayerCardEvent(这里有点问题,如果我实现了一个弃牌逻辑,那么弃牌岂不是也要播放动画了?

项目相关代码

代码仓库:https://gitee.com/nbda1121440/DreamOfTheKingdom.git

标签:20240309_1240

posted @   hellozjf  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示