当前位置: 首页 > news >正文

Cocos Creator2D游戏开发(15)---预制体和按钮的绑定以及冷却效果的实现

场景: 植物大战僵尸中,种植植物前,要判断状态,只有在阳光充足时才能点击

图片资源:
在这里插入图片描述

  1. 预制体的创建,创建一个空节点命名: CardTemplate,将三张豌豆射手相关的图片拖入 如下图

在这里插入图片描述
其中card_mask图片中的透明度改为150;在这里插入图片描述

  1. 在assets中创建prefab文件夹,将CardTemplate节点直接拖入prefab文件夹,然后就出现了CardTemplate预制体
    在这里插入图片描述
  2. 双击预制体CardTemplate,创建脚本CardTemplate,并将脚本CardTemplate拖入右侧属性检查器中;
    在这里插入图片描述
  3. 在脚本CardTemplate中添加代码
import { _decorator, Component, Node, Sprite } from 'cc';
const { ccclass, property } = _decorator;@ccclass('CardTemplate')
export class CardTemplate extends Component {@property({ type: Node })public cardLight: Node = null; // 卡牌亮节点@property({ type: Node })public cardGrey: Node = null; // 卡牌暗节点@property({ type: Sprite })public cardMask: Sprite = null; // 卡牌遮罩start() {this.cardLight.active = true;this.cardGrey.active = false;this.cardMask.node.active = false;}update(deltaTime: number) {}onButtonClick(){console.log("按钮被点击了")}}
  1. 节点对应绑定,拖过去一一对应
    在这里插入图片描述

  2. 在card_light下,添加button组件
    ClickEvents改为1, 第二个框选择CardTemplate,第三个框选择onButtonClick
    在这里插入图片描述
    点击运行,尝试点击豌豆射手,就可以看到控制台打印的日志了;
    调整下面三行的值,再次点击测试;

        this.cardLight.active = true;this.cardGrey.active = false;this.cardMask.node.active = false;



  1. 冷却效果的实现
    图片card_mask属性调整
    在这里插入图片描述
    添加代码:
import { _decorator, Component, Node, Sprite } from 'cc';
const { ccclass, property } = _decorator;@ccclass('CardTemplate')
export class CardTemplate extends Component {@property({ type: Node })public cardLight: Node = null; // 卡牌亮节点@property({ type: Node })public cardGrey: Node = null; // 卡牌暗节点@property({ type: Sprite })public cardMask: Sprite = null; // 卡牌遮罩@property({ type: Number })private cdTime: number = 5; // 卡牌冷却时间private cdTimer: number = 0; // 卡牌冷却计时器start() {this.cardLight.active = false;this.cardGrey.active = true;this.cardMask.node.active = true;this.cdTimer = this.cdTime}update(deltaTime: number) {if(this.cdTimer >0 ){this.cdTimer -= deltaTime;this.cardMask.fillRange = -(this.cdTimer / this.cdTime);if(this.cardMask.fillRange >0){this.cardLight.active = true;this.cardGrey.active = false;this.cardMask.node.active = false;}}}onButtonClick(){console.log("按钮被点击了")this.cardLight.active = false;this.cardGrey.active = true;this.cardMask.node.active = true;this.cdTimer = this.cdTime}}

效果如下
在这里插入图片描述

知识点来源: https://www.bilibili.com/video/BV1AQe9eqEfw/


http://www.mrgr.cn/news/10266.html

相关文章:

  • Docker数据卷使用手册
  • 【Excel】Excel小技巧(实时更新中)- 0.0.1
  • Linux文件编程(系统API调用)
  • 幅频特性曲线分析及使用WPF绘制
  • 2024手把收教你下载FL Studio 24.1.1.4239中文版破解版图文激活教程
  • Tcp VS Udp文件传输协议分析与比较
  • 深度学习----------------------残差网络ResNet
  • Unity-可分组折叠的Editor
  • wxpython Scintilla styledtextctrl滚动条拖到头文本内容还有很多的问题
  • 1058 选择题——PAT乙级
  • 前端学习Day35
  • 网络安全售前入门02——产品了解
  • ReTagList标签列表(API)
  • Solon2 接口开发:实战 Gateway 模式效果
  • K8S 1.31 新功能: 跨核分发CPU
  • 【图像处理】Retinex算法用于图像亮度增强
  • 【Deep-ML系列】Pegasos Kernel SVM Implementation(手写支持向量机)
  • Spring MVC (面试篇)
  • <数据集>水面垃圾识别数据集<目标检测>
  • 【运维高级内容--MySQL】