用“qwer”打造类似梦幻西游中比巧克力还丝滑的状态机

点击上方亿元程序员+关注和★星标

引言

大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

梦幻西游是流量密码吗?本文不讲它

一起来看

在游戏开发中,通常用状态机 来管理游戏对象的各种状态和行为 。状态机模型包括一组有限的状态、状态之间 的转换规则以及与每个状态相关 的操作。其中核心的设计模式是状态模式

本文将介绍如何在游戏开发中运用状态模式来实现玩家动作的状态机

本文源码和源工程在文末获取,小伙伴们自行前往。

什么是状态模式?

状态模式 是一种行为型设计模式 ,它用于管理对象在内部状态 发生变化时如何改变其行为 。状态模式的主要思想是将不同状态 封装成单独的类 ,使对象可以动态地切换状态 ,同时保持其接口一致性 。这有助于减少条件语句的使用 ,提高代码的可读性和可维护性

在游戏开发中,状态模式常常用于管理游戏对象的状态 ,例如玩家角色的状态(站立、行走、奔跑、攻击等),NPC的状态,或者游戏关卡的状态。

下面我们来看下如何用状态模式实现玩家动作的状态机

一起来实现玩家动作的状态机

我们根据以下的步骤简单地通过状态模式实现一下玩家动作的状态机:

1.状态接口

首先声明一个状态接口IPlayerState,它包含状态的进入enter、状态的退出exit以及状态的更新update

2.角色状态

定义不同的角色状态 ,并且在进入状态之后通过FrameAnim组件去播放不同的动画。

待机状态和移动状态:

攻击状态和死亡状态:

3.动画组件

简单 敲一个帧动画的动画组件。

(杀鸡焉用牛刀!?)

初始化 加载一下配置,包括帧动画的图片 和帧动画配置

写一个播放的接口DoFrameAnim去播放指定的动作,包含动作的方向和是否循环。

最后通过update去更新角色的帧动画。

4.准备资源

把珍藏在云盘的82年的资源拿出来。

包括一张包含着角色基本动作的图片,可以看出来是个漂亮的小女孩。

以及控制动画的核心配置数据。

5.测试代码

首先我们还是要利用一下Cocos的Logo,并且通过cc.SystemEvent.EventType.KEY_DOWN事件监听我们的键盘事件。

然后分别监听qwer,来控制角色进入待机、移动、攻击、死亡状态。

对应的状态切换接口。

6.结果演示

通过qwer,来控制角色进入待机、移动、攻击、死亡状态。

成功实现玩家动作的状态机。

结语

在哪里 可以看到如此清晰的思路,快跟上我的节奏!关注我 ,和我一起了解 游戏行业最新动态,学习游戏开发技巧。

本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看 !请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

8年主程手把手打造Cocos独立游戏开发框架

从零开始开发贪吃蛇小游戏到上线系列

游戏开发的技巧、心得、资讯

关注我,发送"状态模式"获取源码和源工程。

点击下方绿色按钮+关注

相关推荐
喜欢踢足球的老罗8 分钟前
一张跨域图的“四次换乘“:blob URL 与 Chrome 扩展架构里的工程艺术
前端·chrome·架构
程序员黑豆9 分钟前
AI全栈开发 - Java:基本数据类型 vs 引用数据类型的内存存储
java·前端·ai编程
FserSuN10 分钟前
Chrome CORS / PNA / LNA 问题排查与解决方案
前端·chrome
小小小小宇18 分钟前
Claude Code 自动运行方法大全
前端
道友可好20 分钟前
AI 测试全绿,代码却是错的
前端·人工智能·后端
国科安芯39 分钟前
商业航天通信载荷数字处理单元供电架构研究——基于ASP7A84AS的高精度低压差线性稳压器技术分析
前端·单片机·嵌入式硬件·fpga开发·架构·安全性测试
TangentDomain1 小时前
AI 写代码时代,游戏 UI 架构为什么停在 MVP?
前端·游戏·架构
英勇无比的消炎药1 小时前
前端提效神器全新AI组件库TinyRobot改写日常开发模式
前端·vue.js
GuWenyue1 小时前
10分钟搞定TodoList实战!从0搭建Bun+TS的RESTful接口服务
前端·typescript·bun