点击上方亿元程序员+关注和★星标
引言
大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
梦幻西游是流量密码吗?本文不讲它
一起来看
在游戏开发中,通常用状态机来管理游戏对象的各种状态和行为。状态机模型包括一组有限的状态、状态之间的转换规则以及与每个状态相关的操作。其中核心的设计模式是状态模式。
本文将介绍如何在游戏开发中运用状态模式来实现玩家动作的状态机。
本文源码和源工程在文末获取,小伙伴们自行前往。
什么是状态模式?
状态模式是一种行为型设计模式,它用于管理对象在内部状态发生变化时如何改变其行为。状态模式的主要思想是将不同状态封装成单独的类,使对象可以动态地切换状态,同时保持其接口一致性。这有助于减少条件语句的使用,提高代码的可读性和可维护性。
在游戏开发中,状态模式常常用于管理游戏对象的状态,例如玩家角色的状态(站立、行走、奔跑、攻击等),NPC的状态,或者游戏关卡的状态。
下面我们来看下如何用状态模式实现玩家动作的状态机
一起来实现玩家动作的状态机
我们根据以下的步骤简单地通过状态模式实现一下玩家动作的状态机:
1.状态接口
首先声明一个状态接口IPlayerState
,它包含状态的进入enter
、状态的退出exit
以及状态的更新update
。
2.角色状态
定义不同的角色状态,并且在进入状态之后通过FrameAnim
组件去播放不同的动画。
待机状态和移动状态:
攻击状态和死亡状态:
3.动画组件
简单敲一个帧动画的动画组件。
(杀鸡焉用牛刀!?)
初始化加载一下配置,包括帧动画的图片和帧动画配置。
写一个播放的接口DoFrameAnim
去播放指定的动作,包含动作的方向和是否循环。
最后通过update
去更新角色的帧动画。
4.准备资源
把珍藏在云盘的82年的资源拿出来。
包括一张包含着角色基本动作的图片,可以看出来是个漂亮的小女孩。
以及控制动画的核心配置数据。
5.测试代码
首先我们还是要利用一下Cocos的Logo,并且通过cc.SystemEvent.EventType.KEY_DOWN
事件监听我们的键盘事件。
然后分别监听q
、w
、e
、r
,来控制角色进入待机、移动、攻击、死亡状态。
对应的状态切换接口。
6.结果演示
通过q
、w
、e
、r
,来控制角色进入待机、移动、攻击、死亡状态。
成功实现玩家动作的状态机。
结语
在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。
本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。
实不相瞒,想要个赞和在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏:
8年主程手把手打造Cocos独立游戏开发框架
从零开始开发贪吃蛇小游戏到上线系列
游戏开发的技巧、心得、资讯
关注我,发送"状态模式"获取源码和源工程。
点击下方绿色按钮+关注