【100个Cocos实例】仿LOL手游中技能冷却效果

看看和你想的是否一样

引言

Cocos中技能冷却效果

大家好,在游戏开发中,技能释放后,往往会有一个冷却效果,俗称CD

主要用来规定玩家使用某个技能的间隔限制频繁使用

本文将介绍一下如何在Cocos中实现技能冷却效果

本文源工程可在文末阅读原文获取,小伙伴们自行前往。

1.技能冷却效果

游戏录屏,LOL手游中的技能冷却效果

在游戏开发中,技能释放后,会在技能图标上添加一个数字的倒计时效果。

然后技能图标会变暗,同时会有一个灰色遮罩表示倒计时进度,技能点击不生效

这里面有哪些知识点?

2.需求分析

要在Cocos中实现技能冷却效果,可能需要以下知识点

  • 技能图标变灰。
  • 技能倒计时。
  • 技能遮罩扇形变化。
  • tween动画的使用。

下面一起来实现技能冷却效果。

3.实现技能冷却效果

1.环境

引擎版本:Cocos Creator 3.8.1

编程语言:TypeScript

2.资源准备

首先准备一批好看的技能图标,美术资源仅做演示用,请勿用做商业用途

请勿用做商业用途

然后简单地摆个盘

达到米其林的效果

为了更清晰显示倒计时,我们给Label添加一个描边组件

LabelOutline

遮罩要实现扇形变化,需要做以下处理。

  • Type改成FILLED
  • FillType改成RADIAL
  • FillCenter改成(0.5,0.5)
  • FillStart改成0.25,从时钟12点的方向开始。

扇形遮罩

下面一起来写代码。

3.编写代码

首先我们创建一个SkillCooling组件并且添加到技能按钮节点上,并且在start方法中初始化。

import { _decorator, Button, Component, EventHandler, Label, Node, Sprite, tween } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('SkillCooling')
export class SkillCooling extends Component {button: Button;icon: Sprite;mask: Sprite;label: Label;start() {this.button = this.getComponent(Button) || this.addComponent(Button);let eventHandler = new EventHandler();eventHandler.target = this.node;eventHandler.component = 'SkillCooling';eventHandler.handler = 'onClick';this.button.clickEvents.push(eventHandler);this.icon = this.node.children[0].getComponent(Sprite);this.mask = this.node.children[1].getComponent(Sprite);this.label = this.node.children[2].getComponent(Label);}
}

然后编写核心的代码onClick点击事件。

其中通过Button组件的enabled控制是否可以点击。

this.button.enabled = false;

通过Sprite组件的grayscale使图标变灰。

this.icon.grayscale = true;

通过Sprite组件的fillRange使遮罩实现扇形变化。

this.mask.fillRange = 1;

tween组件的onUpdate回调实现技能冷却倒计时。

tween(this.mask).to(random - 1, { fillRange: 1 / random }, {onUpdate: (target: object, ratio: number) => {}
}).start();

为了演示,我们点击技能后随机产生冷却时间,先整数倒计时,最后一秒保留一位小数倒计时,完整代码如下:

onClick() {this.button.enabled = false;this.icon.grayscale = true;this.mask.fillRange = 1;const random = Math.floor(Math.random() * 9) + 2;tween(this.mask).to(random - 1, { fillRange: 1 / random }, {onUpdate: (target: object, ratio: number) => {this.label.string = Math.ceil(random - (random - 1) * (ratio)).toString();}}).delay(0.1).to(0.9, { fillRange: 0 }, {onUpdate: (target: object, ratio: number) => {this.label.string = (1 - ratio).toFixed(1);}}).call(() => {this.label.string = "";this.button.enabled = true;this.icon.grayscale = false;}).start();
}

就这样我们的代码编写完毕,下面看看效果。

4.效果演示

下课,记得帮忙收藏和分享一下哦

结语

本文源工程可通过私信SkillCooling获取。

在哪里可以看到如此清晰的思路,快跟上我的节奏!关注我,和我一起了解游戏行业最新动态,学习游戏开发技巧。

我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》大家可以自行点击搜索体验。

实不相瞒,想要个在看!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐专栏:

100个Cocos实例

8年主程手把手打造Cocos独立游戏开发框架

和8年游戏主程一起学习设计模式

从零开始开发贪吃蛇小游戏到上线系列

知识付费专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/322870.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】字符集与排序规则

在MySQL数据库中,字符集(Character Set)和排序规则(Collation,也称字符集校验规则)是重要的概念,它们对于正确存储和比较数据至关重要。 字符集与排序规则 字符集是一组字符的集合,与数字编码…

Echart 属性设置

一、设置图形在容器的空间占比 通过设置option.grid属性 grid: {left: 0,right: 0,bottom: 0,top: 0,containLabel: true } 为了方便理解把值都设置成0,我们把图表当成一个子组件,上面的left,right,bottom,top的设置…

pyqtgraph 教程

pyqtgraph 教程 简介 PyQtGraph 是一个用于科学和工程数据可视化的开源库,基于 PyQt 和 NumPy 构建而成。它提供了丰富的绘图工具和交互功能,可以用于创建高性能的实时数据图表、图像显示和信号处理应用。 以下是 PyQtGraph 的一些特点和功能&#xf…

[Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目

前面讲解了通过命令行方式来部署k8s项目,下面来讲讲通过腾讯云TKE来快速创建Pod、Deployment、Service部署k8s项目,云平台搭建Kubernetes可参考[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群 一.通过腾讯云TKE创建集群 1.创建集群 参考上…

什么时候需要更换助听器?

什么时候需要更换助听器? 如果您现有的助听器无法完成工作,您如何知道是修理还是更换它们?助听器可能由于两个主要原因而失效,首先,它们可能出现故障,因此不再提供充分或适当的扩增。其次,您的听…

c++牛客总结

一、c/c语言基础 1、基础 1、指针和引用的区别 指针是一个新的变量,指向另一个变量的地址,我们可以通过这个地址来修改该另一个变量; 引用是一个别名,对引用的操作就是对变量本身进行操作;指针可以有多级 引用只有一…

GPU连通域分析方法

第1章连通域分析方法 连通域分析方法用于提取图像中相似属性的区域,并给出区域的面积,位置等特征信息。分为两种,基于游程(Runlength),和基于标记(Label)。 基于游程的方法,按照行对图像进行游…

上班经常迟到怎么办?

相信上班需要打卡的小伙伴都跟博主一样,经常可能因为迟一两分钟导致打开迟到而懊恼。 那么,如何避免这种问题呢?下面给大家提供一下博主自己试过的方法,效果还挺不错的 时间逆推法: 拿博主举例子,我住处到公司大概是…

Spring Security 6.x 系列(14)—— 会话管理之源码分析

一、前言 在上篇 Spring Security 6.x 系列(13)—— 会话管理之会话概念及常用配置 Spring Security 6.x 系列(14)—— 会话管理之会话固定攻击防护及Session共享 中了清晰了协议和会话的概念、对 Spring Security 中的常用会话配置进行了说明,并了解会话固定攻击防护…

计算机毕业设计——SpringBoot+vue仓库管理系统(附源码)

1,绪论 1.2,项目背景 随着电子计算机技术和信息网络技术的发明和应用,使着人类社会从工业经济时代向知识经济时代发展。在这个知识经济时代里,仓库管理系统将会成为企业生产以及运作不可缺少的管理工具。这个仓库管理系统是由&a…

展望2024: 中国AI算力能否引爆高性能计算和大模型训练的新革命?

★算力;算法;人工智能;高性能计算;高性能;高互联;生成式人工智能;StableDiffusion;ChatGPT;CoPilot;文本创建;图像生成;代码编写&…

就绪探针存活探针钩子

存活探针 livenessprobe 杀死容器,重启。 就绪探针 readinessProbe pod的状态是running ready状态是notready 容器不可以提供正常的业务访问,就绪探针不会重启容器 tcpSocket只是监听荣亲上的业务端口能否正常通信。8081没有,8080还在&am…