用“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独立游戏开发框架

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

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

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

点击下方绿色按钮+关注

相关推荐
autumnTop5 分钟前
为什么访问不了同事的服务器或者ping不通地址了?
前端·后端·程序员
weixin_4433533126 分钟前
小红书帖子评论的nodejs爬虫脚本
前端·爬虫
yzzzzzzzzzzzzzzzzz28 分钟前
HTML 常用标签介绍
前端·html
Wcy307651906631 分钟前
web前端第二次作业
前端·javascript·css
北京_宏哥31 分钟前
Python零基础从入门到精通详细教程11 - python数据类型之数字(Number)-浮点型(float)详解
前端·python·面试
waterHBO34 分钟前
css 模拟一个动画效果,消息堆叠。
前端·css
艾小码1 小时前
JavaScript 排序完全指南:从基础到高阶实战
前端·javascript·排序算法
前端加油站1 小时前
在 cursor 成为流行的开发方式后,作为普通开发我们能做什么
前端
Cache技术分享1 小时前
163. Java Lambda 表达式 - Function 的链式组合
前端·后端
Zestia1 小时前
页面点击跳转源代码?——element-jumper插件实现
前端·javascript