位置: 编程技术 - 正文

cocos2dx3.2开发 RPG《Flighting》(六)角色的状态和控制效果(cocos2dx游戏开发)

编辑:rootadmin

推荐整理分享cocos2dx3.2开发 RPG《Flighting》(六)角色的状态和控制效果(cocos2dx游戏开发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2dx游戏开发教程,cocos开发游戏,cocos游戏开发教程,cocos2dx游戏开发,cocos开发游戏,cocos2dx游戏开发,cocos开发游戏,cocos2dx游戏开发,内容如对您有帮助,希望把文章链接给更多的朋友!

一、前言

一般来说,我们在做一个稍微有点智能的实体的时候都会用到状态机。这里我没有用到,但是我也为角色设置了几种状态。

如果大家看了上一节,也完成了角色的基本移动的话。对比过我一直说的《BattleHeart》之后,你会发现,现在的控制移动操作也太挫了,既没有那一条拉出来的导航线,也没有角色被选中的效果。所以接下来我们要对我们的基本控制操作加入一些效果。

二、正文

1、角色的状态

来来去去我们的角色无非几种基本状态 待机、移动、攻击、受伤、死亡。所以我们定义一个抽象类。声明了所有的状态对应的函数。

我们的Role类也做出相应的修改,继承RoleProtocol并且重写实现这些接口

在Role里面定义状态枚举类,并且增加一个成员变量表示当前角色的状态

记得上一节的最后我们的两个方法move()和stand(),他们的由来就是上面所说的,下面看他们两个的实现

很简单,就是先判断是不是已经在播放站立或行走动画了,如果是,没必要在播放(不然会定在那里不动),如果不是,则播放动画。

现在暂时会用到的就这两种状态,其他状态以后用到的时候会在清楚说明。

2、控制效果

如果按现在的操作,点击选中我们的角色之后,要拉出去到目标点,再放开手(原本BattleHeart就是这样操作的)。

那么在视觉上起码也要有点效果提醒用户。

1)选中的高亮效果

实现思路:

在Role里面设置一个属性m_isHL,还有一个初始不可见的Sprite,m_select_circle

Layer中检测到Role被点击之后,设置m_isHL为true,Role的update函数会时刻检测m_isHL,如果为true的话,m_select_circle变得可见。

cocos2dx3.2开发 RPG《Flighting》(六)角色的状态和控制效果(cocos2dx游戏开发)

需要注意的是,还有很多小细节小逻辑需要处理,例如什么时候m_isHL设置为false,用户点击空白区域的时候(就是没有选中Role)怎么处理等等,不过也很简单,相信大家自己也能写出来。

2)拖出去的导航线

实现思路:

当触摸事件为move的时候,就是已经onTouchBegan选中角色了,鼠标在移动但是左键没有松开的时候。

在起点(角色的位置)和终点(鼠标的位置)之间画一条线。这里给出我的代码供大家参考。

onTouchBegan里面判断如果点中角色(上面代码那个if里面),会创建一个叫m_trace的Sprite。

m_trace开始的时候只是很小的一块矩形("color.png"只是很小的一块矩形,并不是一条线)。

明显,onTouchMoved里面就是设置m_endPoint而已(m_endPoint就是导航线的终点)

onTouchEnded的触发表明已经松开鼠标左键。m_trace(导航线)应该消失了

关于导航线重要的还是下面的update函数

update中调用update_trace

重要的代码后面已经添加了注释,应该不难理解。

最后,附上我们优化完的控制效果。

本节结束。

我的csdn地址:

[置顶] 用cocos2d-x 实现UV动画--实现篇 用cocos2d-x实现UV动画--实现篇UVSpriteuv动画是指通过在程序运行时动态改变纹理坐标,实现动态效果的纹理动画,使用uv动画可以实现水流动,火焰燃烧等

cocos2dx3.2开发 RPG《Flighting》(七)回到战斗场景,更新角色的叠放次序 一、前言至此,我们的战斗场景关于角色移动已经讲得七七八八了。不过还是有一些问题需要注意注意。二、正文在第五节里面我们讲了FlightLayer里面有

cocos2dx3.2开发 RPG《Flighting》(八)开始战斗 一、前言前面我们已经基本学会了怎么让角色走起路来而且也做了很多的优化。下面是时候开始战斗了。不过还是不要急,我们先暂时不引入英雄和怪

标签: cocos2dx游戏开发

本文链接地址:https://www.jiuchutong.com/biancheng/372658.html 转载请保留说明!

上一篇:【cocos2d-x】 EventListenerTouchAllAtOnce在IOS不可用的问题(cocos2dx4.0教程)

下一篇:[置顶] 用cocos2d-x 实现UV动画--实现篇(置顶句子怎么弄)

  • 怎样确认个人所得税专项扣除操作流程
  • 物业公司广告费返还会计分录
  • 预计净残值影响减值准备吗
  • 所得税费用的确认方法
  • 减免税金需要计提吗
  • 资产负债表里是科目还是项目
  • 上市公司限制性股票行权时间限制多久
  • 组织职工捐款取得的现金计入什么会计科目?
  • 政府往来账
  • 中小微企业优惠政策落实措施
  • 赞助支出为什么不算广告费
  • 汇算清缴补交所得税会计分录小企业会计政策
  • 税交多了退税走到哪一流程了问谁
  • 股东借款可以免增值税吗
  • 银行存款日记账最后一行怎么填
  • 在建工程的招待费计入到哪个科目
  • 公司注销取不到采购发票怎么汇算清缴?
  • 企业代开租金专票开什么项目好?
  • 税务局领普通发票需要多少钱
  • 专票进项税可以抵扣几个月以前的
  • 纳税人首次办税补充信息表怎么填
  • 开票码是什么意思
  • 增值税主要有三种类型
  • 网络工程完工后干什么
  • 进项发票已入账抵扣后开负数红冲怎么处理
  • 家政公司可以开专票吗
  • 抵押贷款逾期怎么处理抵押物
  • 企业涉及预计负债的主要事项包括
  • 手机压缩包损坏怎么修复
  • 预付会议费会计分录
  • php获取文件内容的函数
  • 苹果14
  • 微软windows11泄露
  • php 字符串函数
  • linux的系统设置在哪
  • el-tree方法
  • 年末结转利润分配账户的借方余额表示
  • php floor()
  • php出栈函数
  • 库存现金月末怎么结转
  • 报销差旅费退回余款填什么凭证
  • php遍历结果集
  • 毕业设计-基于组态软件的流量比值过程控制系统设计
  • sklearn average precision
  • 计算机视觉竞赛很重要吗
  • 这几个sql语法的区别
  • 代发工资怎么做
  • 非流动资产处置计入什么科目
  • 金税盘发票作废失败09D13D
  • 什么情况企业需要调档
  • sqlserver阻止保存要求重新
  • 补贴收入税收政策
  • 代开专票上的税额比电子缴款凭证上的税额少怎么调整?
  • 外单位替本单位缴纳社保
  • 电子银行承兑到期没有兑现怎么办
  • 手撕定额发票可以抵扣吗
  • 销售货物海运费会计分录
  • 怎样单方面注销手机卡
  • 合同资产相当于以前什么会计科目
  • 会计往来账如何记账
  • 松散索引和紧凑索引
  • 重装win7系统后鼠标反应慢
  • c盘esd是什么文件夹
  • win7笔记本任务管理器
  • windows开始按钮点了没用
  • linuxvi编辑器三种模式
  • linux服务器常用操作命令
  • win7怎么设置鼠标双击打开
  • Win10 mobile 10586.107升级后会出现哪些bug?
  • 解读css发展历史简述
  • perl中的$_
  • javascript自动化
  • python中执行同一函数3次
  • highcharts update
  • 陕西省税务局电子税务局官网
  • 税务上如何界定收入
  • 动态简报和工作总结
  • 没盖发票专用章可以补盖吗
  • 西北地区的沙尘暴
  • 城市维护建设税怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设