- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
22. 瘸腿蛤蟆笔记22-cocos2d-x-3.2 通过progresstimer类实现dota技能冷却特效
瘸腿蛤蟆笔记22-cocos2d-x-3.2通过ProgressTimer类实现Dota技能冷却特效上篇回顾突然蛤蟆觉得,每次学习之后要加一句名言以鼓励蛤蟆和蛤蟆的小伙伴么。本篇名言:每个意念都是一场祈祷。[詹姆士·雷德非]上篇中,蛤蟆学习了如何使得精灵像抽搐一样的运动。我们通过简单的2个动画合成实现了特效。这次我们学习进度条的类,通过这个类我们可以实现游戏中的很多东西。比如游戏开机时候的加载进度,英雄技能的冷却等。冷却特效蛤蟆之前在网上看见过某个小伙伴实现过,感觉很赞。这次在学习ProgressTimer类的时候,突然发现ProgressTimer类很容易实现之。那么咱们自己也来做一个吧。理论介绍我们先来看下用到的几个类,如下图。这个ProgressTimer类,看上去级别贼高啊,直接继承于Node类。ProgressTimer是Node的子类。该类根据百分比来渲染显示内部的Sprite对象。变化方向包括径向,水平或者垂直方向。它有个create函数,以Sprite对象作为进度条的图形,创建一个ProgressTimer对象.然后我们再来看下ProgressTo类。这个ProgressTo类也有create函数,实现创建并初始化进度。它可以有两个参数,第一个是时间,第二个是进度条百分比。具体步骤我们还是在HelloWorld.cpp文件中找到boolHelloWorld::init()函数,加入如下代码。auto s = Director::getInstance()-getWinSize();auto to1 = Sequence::createWithTwoActions(ProgressTo::create(0, 0), ProgressTo::create(2, 100));auto sprite1 = ProgressTimer::create(Sprite::create(zt.png)); sprite1-setType( ProgressTimer::Type::RADIAL ); addChild(sprite1,200,1); sprite1-setPosition(Vec2(100, s.height/2));auto sprite = Sprite::create(zt.png);addChild(sprite,100,2); sprite-setPosition(Vec2(100, s.height/2));sprite-setOpacity(80); sprite1-runAction( RepeatForever::create(to1)); 最后实现效果如下图3 所示。怎么样下伙伴们,是不是很简单。就是这样的节奏。代码解释下面我们来解释下代码的含义:auto s = Director::getInstance()-getWinSize();//获取窗口大小auto to1 = Sequence::createWithTwoActions(ProgressTo::create(0, 0), ProgressTo::create(2, 100)); //创建一个序列动作,有2个动作组成,一个是进度条百分比是0%,一个进度条百分比是100%。auto sprite1 = ProgressTimer::create(Sprite::create(zt.png));//通过精灵创建一个进度条 sprite1-setType( ProgressTimer::Type::RADIAL ); //设置进度条模式是辐射状态,就是类似我们技能冷血的样子。 addChild(sprite1,200,1); //添加进度条到HelloWorld层,同时设置Z坐标为200. sprite1-setPosition(Vec2(100, s.height/2)); //设置进度条位置,和精灵重叠auto sprite = Sprite::create(zt.png);//创建一个精灵。addChild(sprite,100,2);//添加进度条到HelloWorld层,同时设置Z坐标为100.这样的话,进度条就在精灵sprite1的上面了,有冷却效果了。 sprite-setPosition(Vec2(100, s.height/2)); //设置精灵位置,和进度条重叠sprite-setOpacity(80); //设置精灵透明度 sprite1-runAction( RepeatForever::create(to1)); //精度条调用动作就是这个样子。总结本次我们实现了类似Dota游戏,WOW游戏等其他各种游戏中更多技能冷却实现。很简单的吧,哈哈。对了
文档评论(0)