cocos2d-x技能冷却效果

2024-06-17 10:32
文章标签 效果 cocos2d 技能 冷却

本文主要是介绍cocos2d-x技能冷却效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、cocos2d-x技能冷却效果

例子做了一个类似技能冷却的效果,当技能在cd中时没法点击使用技能,cd完成后可以点击技能拖动,使用完成后再次进入技能cd。技能的冷却效果使用CCActionInterval的子类CCProgressTo,这个类的使用方式很简单,CCProgressTo::create(10.0f, 100.0f),第一个参数是效果持续的时间,这里我们就可以说是技能的冷却时间,第二参数是设置百分比,可以理解为效果作用的对象的最终显示范围。这里为实现冷却的效果还需要CCProgressTimer这个类配合使用,这个类是CCNode的子类,可以实现一些纹理的载入特效,它以CCSprite作为对象创建,通过setTypeP()来设置具体效果,setType里的参数是一个枚举值,新版的cocos2d-x只包括两种效果,具体运行效果可查看cocos2d-x源码,然后修改例子工程代码setType方法里的值看到实际效果。

代码如下:
  1. bool SkillCd::init()
  2. {
  3.     if(!CCLayer::init())
  4.     {
  5.         return false;
  6.     }
  7.     flag=false;//技能是否在CD中
  8.     this->setTouchEnabled(true);
  9.     size=CCDirector::sharedDirector()->getWinSize();
  10.    
  11.     CCSprite* background=CCSprite::create("background.jpg");
  12.     background->setPosition(ccp(size.width*0.5, size.height*0.5));
  13.     this->addChild(background);
  14.    
  15.     skillWait=CCSprite::create("cding.png");
  16.     skillWait->setPosition(ccp(size.width-100, 80));
  17.     this->addChild(skillWait,1);
  18.    
  19.     ready=CCSprite::create("ready.png");
  20.     skillTimer=CCProgressTimer::create(ready);
  21.     skillTimer->setPosition(ccp(size.width-100,80));
  22.     skillTimer->setType(kCCProgressTimerTypeRadial);
  23.     this->addChild(skillTimer,2);
  24.    
  25.     skillCooldown();
  26.    
  27.     return true;
  28. }

  29. void SkillCd::skillCooldown()
  30. {
  31.     cdAction=CCProgressTo::create(10.0f, 100.0f);
  32.     CCCallFunc* func=CCCallFunc::create(this, callfunc_selector(SkillCd::allowToClick));
  33.     CCFiniteTimeAction* seq=CCSequence::create(cdAction,func,NULL);
  34.     skillTimer->runAction(seq);
  35. }

  36. void SkillCd::allowToClick()
  37. {
  38.     flag=true;
  39. }

  40. void SkillCd::registerWithTouchDispatcher()
  41. {
  42.     CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
  43. }

  44. bool SkillCd::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
  45. {
  46.     CCPoint nodeSpace=convertTouchToNodeSpace(pTouch);//这里需要坐标转换
  47.     if(skillWait->boundingBox().containsPoint(nodeSpace))
  48.     {
  49.         if(flag)
  50.         {
  51.             point.x=pTouch->getLocation().x;
  52.             point.y=pTouch->getLocation().y;
  53.             scope=CCSprite::create("skillscope.png");
  54.             scope->setPosition(point);
  55.             this->addChild(scope,3);
  56.            
  57.             return true;
  58.         }
  59.         else
  60.         {
  61.             CCLog("Skill is cooling");
  62.            
  63.             return false;
  64.         }
  65.     }
  66.     else
  67.     {
  68.         return false;
  69.     }
  70. }

  71. void SkillCd::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
  72. {
  73.     point.x=pTouch->getLocation().x;
  74.     point.y=pTouch->getLocation().y;
  75.     scope->setPosition(point);
  76. }

  77. void SkillCd::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
  78. {
  79.     this->removeChild(scope);
  80.     flag=false;
  81.     skillCooldown();//使用完毕,重新进入技能CD
  82. }

  83. void SkillCd::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent)
  84. {
  85.     this->removeChild(scope);
  86. }
复制代码

这篇关于cocos2d-x技能冷却效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069189

相关文章

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

【Godot4.3】多边形的斜线填充效果基础实现

概述 图案(Pattern)填充是一个非常常见的效果。其中又以斜线填充最为简单。本篇就探讨在Godot4.3中如何使用Geometry2D和CanvasItem的绘图函数实现斜线填充效果。 基础思路 Geometry2D类提供了多边形和多边形以及多边形与折线的布尔运算。按照自然的思路,多边形的斜线填充应该属于“多边形与折线的布尔运算”范畴。 第一个问题是如何获得斜线,这条斜线应该满足什么样

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

CTFHub技能树-Git泄漏-Index

目录 一、Git索引(Index)的基本概念 二、解题过程 主旨:使用git泄漏恢复源代码 方法一:使用GitHack手动恢复 方法二:直接使用Git_Extract获取网站源代码拿去flag   当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的Gi

Nuxt3入门:过渡效果(第5节)

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注。 Nuxt 利用 Vue 的 <Transition> 组件在页面和布局之间应用过渡效果。 一、页面过渡效果 你可以启用页面过渡效果,以便对所有页面应用自动过渡效果。 nuxt.config.js export default defineNuxtConfig({app: {pageTransition: {name: 'fade',mode

作为刚从事Java开发的小白,需要掌握哪些技能

作为一个刚踏入Java开发世界的小白,面对各种技术和工具,你可能会觉得有点不知所措。但是别担心,我会给你一个简单清晰的路线图,让你可以有条不紊地掌握基本技能,逐步成长为一名Java开发者。 1. 扎实的Java基础 Java的基础是你迈向高级开发的重要基石,建议从以下几个方面着手: 语法和基础概念:比如变量、条件语句、循环、方法、数组、面向对象编程(OOP)等等。这些基础如同建房子的地基,越

Differential Diffusion,赋予每个像素它应有的力量,以及在comfyui中的测试效果

🥽原论文要点 首先是原论文地址:https://differential-diffusion.github.io/paper.pdf 其次是git介绍地址:GitHub - exx8/differential-diffusion 感兴趣的朋友们可以自行阅读。 首先,论文开篇就给了一个例子: 我们的方法根据给定的图片和文本提示,以不同的程度改变图像的不同区域。这种可控性允许我们再现

【Unity小技巧】URP管线遮挡高亮效果

前言 在URP渲染管线环境下实现物体遮挡高亮显示效果,效果如下: Unity URP遮挡高亮 实现步骤 创建层级,为需要显示高亮效果的物体添加层级,比如Player 创建一个材质球,也就是高亮效果显示的材质球找到Universal Renderer Data Assets 4.在Assets上添加两个Render Objects组件 第一个做如下三处设置 指定遮挡层级指