智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...
随笔 - 991, 文章 - 0, 评论 - 27, 阅读 - 341万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

cocos2d-x 技能冷却特效

Posted on   Bill Yuan  阅读(1284)  评论(0编辑  收藏  举报

转自:http://blog.csdn.net/qiurisuixiang/article/details/8779540

CSDN上看到某同学实现的Dota技能冷却效果,自己平时也玩Dota,也很好奇技能冷却的效果是怎么实现的,所以就尝试着实现了下

其实技能CD的原理很简单:准备两张图片,一张明一张暗,将暗的图片放在地下,明的图片放在上面(注意:两张图片大小一致,明的图片完全覆盖暗的图片),然后主要是对上面明的图片进行进度操作

 

知道了原来,实现起来就很简单了,下面附上关键代码

复制代码
CCSprite *coolSprite = CCSprite::create("cool.png");
coolSprite->setPosition(ccp(winSize.width / 2, winSize.height / 2));
/** 第二个参数zOrder 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的 */
this->addChild(coolSprite, 0);

CCSprite *activeSprite = CCSprite::create("active.png");
CCProgressTimer *progressCD = CCProgressTimer::create(activeSprite);
/** 设置CCProgressTimer类型 2.0版本以上只保留了两种形式*/
progressCD->setType(CCProgressTimerType::kCCProgressTimerTypeRadial);
progressCD->setPosition(ccp(winSize.width / 2, winSize.height / 2));
//zOrder大于暗的图片 所以会覆盖暗的图片
this->addChild(progressCD, 1);
/** 让进度条执行一个动作 显示出动画效果 */
CCProgressTo *progressToAction = CCProgressTo::create(8.0f, 100.0f);
progressCD->runAction(progressToAction);
复制代码

4 运行效果

(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示