第一个项目(六)跳跃动作的初步优化
来源:互联网 发布:apache编译调试选项 编辑:程序博客网 时间:2024/05/01 15:45
有一种逗比精神叫做没人看我也要更新
很明显,写完昨天的代码,如果不停的按jump键肯定就要飞到天上去了,优化的基本思路就是,在一次跳跃没有完成的时候,按jump键不执行jump动作。
那么首先就要给player加一个属性,布尔类型的isJumping,初始化的时候给false,按下跳跃按钮,把值变为true,执行跳跃动作之后,把值变为false,在jump按钮的回执函数里加一个判断如果isJumping是false就执行跳跃动作,看似天一无缝的,但是我发现了一个实际的问题。
就是我们想让isJumping在跳跃完成之后变成false,并不是直接写一句player->runActuon(jump);然后紧跟着isJumping=false;,这样并不是整个跳跃动作完成,而是player->runActuon(jump)这一句代码执行完毕,所以说没有时间差,这样的逻辑是无效的。
我参考了一下资料,找到了一种方法,就是创建一个连续动作c,把动作A(跳)和动作B(赋值false)放到一个连续动作C里执行,到时候直接player->runActuon(动作C)
放弃了当时沾沾自喜的CCAminate单一动作。
CCSequence可以创造连续动作,直接把动作分别放到参数里就行,最后一个参数传NULL,但是如果传的参数是函数不是动作类,就得用指针,这里用callfunc来指针封装。
CCActionInterval* Player::jump2s(){CCCallFunc* callfunc=CCCallFunc::create(this,callfunc_selector(Player::jumpend));CCActionInterval* jump2 =CCSequence::create(CCJumpBy::create(1.0f,ccp(0,0),120,1),callfunc,NULL);return jump2;}void Player::jumpend(){isJumping=false;}之后直接调用jump2s动作就行。
这样开头的问题就解决了。
0 0
- 第一个项目(六)跳跃动作的初步优化
- 第一个项目(五)添加跳跃动作
- cocos2dx3.X项目重写(六)添加不同高度的地图和跳跃优化
- ReactNative学习之旅(2)—对第一个Rn项目的初步调试
- isis第一个接口up的动作
- rails 第一个动作
- 第一个游戏动作开发日志——敌人初步AI设定
- 菜鸟从零开始的第一个应用上线记(六)
- 第一个项目(我的智囊团)
- Django官方教程(六)【创建你的第一个 Django 项目,第四部分】
- 我的第一个项目
- 偶的第一个项目
- 我的第一个项目
- 我的第一个项目
- 第一个实用的项目
- 第一个接触的项目
- IOS的第一个项目
- 第一个6513的项目
- 7 获取内存和SD卡状态
- 使用接插件需要注意的问题
- 树的队列广度遍历
- C++ 全局/静态对象初始化
- DSP6000的上电及供电
- 第一个项目(六)跳跃动作的初步优化
- const可以使得函数重载
- 三菱PLC、西门子PLC、欧姆龙PLC、松下PLC自定义协议RS485接线篇
- Away3D之---------------简单的后处理 灰度滤镜(GrayFilter)
- 读书札记-2013年12月
- STL常用容器详细解析
- DSP6000的几个简单优化技巧
- 彻底搞定C指针---指向指针的指针
- 弱弱的最大公约数