【100个Cocos实例】完蛋,你看我在刮刮乐中刮到了什么?

news2024/11/22 18:51:59

在这里插入图片描述

引言

什么?还能刮出这个?

相信大家对刮刮乐都不陌生,昨天听到小伙伴说花了20买了张刮刮乐,结果刮中了20白忙活一场

假如我们要在Cocos游戏开发中实现刮刮乐效果,应该怎么做呢?

本文将介绍一下如何实现能刮出美女的刮刮乐效果。

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

1.实现原理

想要实现刮刮乐的效果,我们需要借助Mask遮罩组件和Graphics自定义图形组件。

1.遮罩组件

在这里插入图片描述

Mask组件是一个用于实现遮罩效果的关键组件。

通过使用Mask,你可以在游戏中创建各种形状的遮罩,用于显示或隐藏特定区域的内容,常用于实现圆形的头像

2.自定义图形组件

在这里插入图片描述

Graphics组件是一个用于绘制2D图形和路径的强大工具,可通过代码动态创建形状、线条和填充,为游戏界面和特效提供灵活的绘图功能

笔者在写文章和教程的时候就最喜欢用Graphics组件,因为它真的好用

2.资源准备

既然想要在刮刮乐中刮出美女,那么我们就要准备一张美女图,和一张盖在美女上面的遮罩图,所以,这次就委屈Cocos您了。

在这里插入图片描述

将图片放进去Creator,然后简单编辑一下UI。层级结构如下:

在这里插入图片描述

Mask节点添加Mask组件,并且勾选Inverted反向遮罩。添加Mask组件,系统会自动帮忙添加一个Graphics组件:

在这里插入图片描述

3.编写代码

首先创建一个ScratchTicket组件,包含对Mask组件的引用、Graphics组件的引用和isScratching变量用于判断是否正在刮刮刮乐。

import { _decorator, Component, Graphics, Mask, Node, UITransform, v3 } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('ScratchTicket')
export class ScratchTicket extends Component {
    @property({ type: Mask })
    mask: Mask = null;

    graphics: Graphics;

    private isScratching: boolean = false;
}

start方法中获取Graphics组件以及添加鼠标事件的监听。

start() {
    this.graphics = this.mask.getComponent(Graphics);
    this.node.on(Node.EventType.TOUCH_START, this.onTouchStart, this);
    this.node.on(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
    this.node.on(Node.EventType.TOUCH_END, this.onTouchEnd, this);
}

onTouchStartonTouchEnd方法主要处理isScratching的状态。

onTouchStart(event) {
    this.isScratching = true;
}

onTouchEnd(event) {
    this.isScratching = false;
}

onTouchMove中主要实现刮刮乐的核心逻辑:

  • 通过event.getLocation()获取鼠标位置。
  • 通过convertToNodeSpaceAR实现坐标转换。
  • 通过circle方法画圆。
  • 通过fill进行填充。
onTouchMove(event) {
    if (!this.isScratching) return;
    const pos = this.node.getComponent(UITransform).convertToNodeSpaceAR(v3(event.getLocation().x, event.getLocation().y, 0));
    this.graphics.circle(pos.x, pos.y, 30);
    this.graphics.fill();
}

由于Mask组件的反向遮罩效果,画圆的地方会有“擦玻璃”的效果:

在这里插入图片描述

4.效果演示

在这里插入图片描述

结语

近日,笔者受麒麟子(深耕游戏引擎与游戏开发15年,每一滴干货都源自商业项目实践)的邀请,以嘉宾的形式加入知识星球,星球主要用于:

  • 导师教学
  • 学习问题交流
  • 新人入门与进阶
  • 招聘与就业机会分享
  • 面试题集锦
  • 面试经验分享

总的来说,星球的目标只有一个:提供优质内容,搞学习。感兴趣的小伙伴可以私信“知识星球”了解和捧场。

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

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

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

推荐专栏:

你知道王者荣耀是怎么实现技能范围指示器的吗?

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

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

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

本文源工程可通过私信发送ScratchTicket获取。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Angular的Ng-Zorro组件库通知提醒框知识点

目录 系列文章目录 一、在angular中引入通知提醒框服务 二、创建通知提醒框 提示:在实际操作中根据id移除通知提醒框的方法尚未熟悉,根据此文档进行巩固 一、在angular中引入通知提醒框服务 constructor(private notifition: NzNotificationService) {}…

pip 安装软件出现 [No space left on device]

问题: /home文件下空间满了,安装软件可能会出现这个问题 解决方法: pip install --no-cache-dir 安装包名

跨链原子交换

原子交换的想法于 2013 年首次在 BitcoinTalk 论坛上提出,它可以实现两个区块链之间的代币交换。 这些交换是原子的,因为双方要么收到对方的硬币,要么都保留自己的硬币。 一方不可能欺骗另一方。 它不依赖任何可信赖的第三方,消除…

TOD和PPS精确时间同步技术

介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术,它们在许多领域都有广泛的应用,总的来说,PPS和TOD被广泛应用于各种需要高度精确时间同步的领域,包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS&#xff08…

HCIP-十二、BGP常用属性

十二、BGP常用属性 实验拓扑实验需求及解法1.IP 地址已配置,自行测试直连。2.AS100 中运行 OSPF3.AS200 中运行 ISIS4.运行 BGP5.发布 BGP 路由6.修改起源属性 Origin7.修改 AS-path8.修改本地优先 Local-preference9.修改 MED 实验拓扑 实验需求及解法 本实验模拟…

java编程:数组代表着苹果期货在 9 天内的价格变化,其中第 n 个元素是苹果在第 n 天的 价格,你可以进行最多三次交易,设计算法,9 天内赚到最多的钱

1 题目 编程题:下面的数组代表着苹果期货在 9 天内的价格变化,其中第 n 个元素是苹果在第 n 天的 价格,你可以进行最多三次交易,设计一个算法,9 天内如何赚到最多的钱?价格数组: [8, 9, 2, 5, …

SSM训练营管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 训练营管理系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系 统主要采用B/S模…

【EasyExcel实践】导出多个sheet到多个excel文件,并压缩到一个zip文件

文章目录 前言正文一、项目依赖二、封装表格实体和Sheet实体2.1 表格实体2.2 Sheet实体 三、核心实现3.1 核心实现之导出为输出流3.2 web导出3.3 导出为字节数组 四、调试4.1 构建调试用的实体类4.2 控制器调用4.3 测试结果 五、注册大数转换器,长度大于15时&#x…

台灯哪种灯光对眼睛好?精选高品质的护眼台灯

近几年越来越多家长开始重视孩子的视力健康问题,要知道如今我国儿童青少年的近视率已经达到了52.7%,也就是说平均每十个儿童青少年中就有五个是存在视力问题的,而且近视的人群是越往高年级的学生占比越多。不过目前也发现了不少低年级的孩子出…

不要被各种专业术语吓倒

有一个东西,是如此奇妙,今天我们需要讲讲。 在不同的函数中,这个东西有着不同的名字,但实际它都是同一个东西。 例如, RegisterWaitForSingleObject 这个 API,它的原型如下: BOOL RegisterWai…

Maven——坐标和依赖

Maven的一大功能是管理项目依赖。为了能自动化地解析任何一个Java构件,Maven就必须将它们唯一标识,这就依赖管理的底层基础——坐标。将详细分析Maven坐标的作用,解释其每一个元素;在此基础上,再介绍如何配置Maven&…

embeddings

“embeddings”的中文翻译是“嵌入”或“嵌入向量”。在自然语言处理(NLP)领域,通常被称为“词向量”或“词嵌入”,它是表示词汇或令牌的一种方式,通过将这些词汇或令牌映射到一个向量空间中的点,以捕捉它们…

HTML5语法总结大全(持续更新中~)

参考书籍: 《HTML与CSS3基础教程》 参考视频: HTML5完整教学通俗易懂 2023新版前端Web开发HTML5CSS3移动web视频教程,前端web入门首选黑马程序员 参考网站: w3school 文章目录 零.开发环境准备1.需要的工具2.Vscode所需要插件3.其…

【Udemy】AWS CLF - 01 题库 (英文版 + 中文版)目录

【挑战业余一周拿证】CSDN官方课程目录 【挑战业余一周拿证】AWS 认证云从业者 薅200美金羊毛 一、介绍 文章记录题库(包含答案解释中文翻译) 共计23章,每天更新 2-10 章习题,需要的客观请点赞收藏 来源Udemy,刷题…

这款高性能分布式ID生成器,现在是你的了~

这是DDD&微服务系列的第17篇,欢迎持续关注~ 概述 在软件开发过程中,我们经常会遇到需要生成全局唯一流水号的场景,例如各种流水号和分库分表的分布式主键ID。特别是在使用MySQL数据库时,除了要求流水号具有“全局唯一”性外&…

SAP_ABAP_基础编程_DESCRIBE FIELD_获取数据对象的属性

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读450次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/j…

CCFCSP试题编号:202109-2试题名称:非零段划分

用差分法 #include<iostream> #include<algorithm> #include<cstring> using namespace std;const int N 500000; const int M 10000; int a[N 2 ] { 0 }; int d[M 1] { 0 };int main() {int n;cin >> n;for (int i 1; i < n; i){cin >&g…

共享充电宝被取代,共享WIFI项目将成市场趋势!

在创业领域如果有这样一个项目&#xff0c;你会选择哪一个&#xff1f;前者投资十万风险大&#xff0c;后者投资几千风险小。同样需要扫街地推&#xff0c;但产生的利润是相同的。相信100%的人会选择后者。实际上这两个项目前者就是共享电宝&#xff0c;后者就是共享WiFi项目。…

STM32--GPIO(8种工作模式)

目录 一、GPIO基本介绍 二、GPIO基本结构分析 1、保护二极管 2、上拉、下拉电阻 3、施密特触发器 4、P-MOS管和N-MOS管 三、GPIO的8种工作方式 1、浮空输入 2、上拉输入 3、下拉输入 4、模拟输入 5、开漏输出 6、推挽输出 7、复用开漏输出 8、复用推挽输出…

JSP forEach 标签遍历map集合

之前我们说了 普通list 单纯按数量循环 bean类型list的遍历方式 那么 我们forEach标签 也能循环map语法非常简单&#xff0c;和循环list基本是一样的 我们直接上jsp代码 <% page import"java.util.Map" %> <% page import"java.util.HashMap" %…