CocosCreator实战篇 | 实现刮刮卡和橡皮擦 | 擦除效果

news2024/12/28 5:57:18

  • 📢博客主页:https://blog.csdn.net/dxt19980308

  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📢本文由肩匣与橘编写,首发于CSDN🙉

  • 📢生活依旧是美好而又温柔的,你也是✨


🏳️‍🌈实现刮刮卡和橡皮擦 | 擦除效果

📢前言

🏳️‍🌈使用方法

🏳️‍🌈技术细节

🏳️‍🌈案例实现

①场景布局

②脚本编写

③脚本和组件挂载

🏳️‍🌈实现效果

📢前言

        Cocos Creator是一款广泛使用的游戏开发引擎,其中包含了许多强大的功能,包括Mask._graphics技术。本文将深入探讨Mask._graphics技术的实现原理和应用场景。         Mask._graphics是Cocos Creator中用于实现遮罩效果的一个关键技术。在游戏中,我们常常需要对某些元素进行遮罩,以达到特定的视觉效果,比如实现圆形头像、矩形裁剪等。


🏳️‍🌈使用方法

        使用 Mask._graphics 功能可以将一个节点或者一个图片或者任何其他的Cocos Creator 控件转换为遮罩层。使用 Mask._graphics 功能的步骤如下:

  1. 创建一个新节点或选择一个已有的节点。
  2. 将Mask 组件添加到节点上。
  3. 在Mask 组件中选择要使用的 MaskType 类型。
  4. 在 Mask 组件中的 Graphics 属性面板中,选择要使用的绘制类型和参数。
  5. 在节点中添加要遮罩的元素,如图片或其他控件。

        在上述步骤中,最核心的是 Mask 组件中的 Graphics 属性。这个属性用于设置绘制类型和参数。下面将详细介绍这个属性的技术细节。


🏳️‍🌈技术细节

        Mask._graphics 属性主要用于设置遮罩层的绘制类型和参数。常用的绘制类型有以下几种:

  1. 矩形(Rect):用于创建一个矩形形状的遮罩层。
  2. 圆形(Circle):用于创建一个圆形形状的遮罩层。
  3. 椭圆形(Ellipse):用于创建一个椭圆形状的遮罩层。
  4. 多边形(Polygon):用于创建一个多边形形状的遮罩层。
  5. 路径(Path):用于创建一个任意形状的遮罩层。

        除了绘制类型外,Mask._graphics 属性还可以设置绘制参数,如颜色、线条宽度、线条样式等。这些参数可以用于调整遮罩层的样式和效果。

        Mask._graphics的实现原理非常简单:它通过绘制一个遮罩图形,然后将要被遮罩的元素限制在这个图形内部来实现遮罩效果。具体而言,Mask._graphics通过继承自Graphics组件,并重写了其中的draw方法来实现遮罩绘制。当遮罩图形发生变化时,Mask._graphics会自动重新绘制遮罩图形,并将其与要被遮罩的元素进行渲染。


🏳️‍🌈案例实现

①场景布局

  1. 新建底部图片节点。
  2. 创建一个挂载mask的节点(勾选反向遮罩),并在mask节点下创建顶部图片节点(擦除的图片)。

 节点细节如下图所示:   

 ②脚本编写

原理:设置鼠标监听事件,在移动过程中执行函数(获取Mask的_graphics,并执行circle()进行圆形路径的绘制,最后使用fill()进行路径的填充)

源码:

@property({
        type: cc.Mask
    })
    myMask: cc.Mask = null;


    @property({
        displayName: "刮卡路径大小",
        min: 20
    })
    size: number = 20;

    onLoad() {
        this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegin, this);
        this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this);
        this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnd, this);
    }
/**鼠标事件 */
    _onTouchBegin(event) {
        var point = event.touch.getLocation();
        point = this.node.convertToNodeSpaceAR(point);
        this._addCircle(point);
    }

    _onTouchMoved(event) {
        var point = event.touch.getLocation();
        point = this.node.convertToNodeSpaceAR(point);
        this._addCircle(point);
    }

    _onTouchEnd(event) {
        var point = event.touch.getLocation();
        point = this.node.convertToNodeSpaceAR(point);
        this._addCircle(point);
    }

/**绘制函数*/
    aaa: cc.Graphics;
    _addCircle(point) {
        this.aaa = this.myMask._graphics;
        this.aaa.circle(point.x, point.y, this.size);
        this.aaa.fill();
    }

③脚本和组件挂载

  1. 将上方创建的节点放在同一父节点下。
  2. 将mask节点挂载到脚本节点中。

 如图: 

🏳️‍🌈实现效果


        总之,Mask._graphics 是Cocos Creator 引擎中一个非常实用的功能,可以帮助开发者轻松创建遮罩层和实现各种特效效果。在使用这个功能时,需要注意其使用方法和技术细节,以确保游戏的性能和效果都能够达到最优状态。 

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

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

相关文章

【SSM框架】spring的创建与使用

spring的创建与使用Spring项目的创建创建一个maven项目添加Spring依赖添加启动类将bean存储到Spring 中创建bean对象将bean对象存储到Spring容器中从Spring中获取bean创建Spring(上下文)对象从Spring中获取到bean对象使用Bean(非必须)从spring中获取Bean…

奇瑞版Model 3与Model Y登场:正式进军高端纯电

作者 | Amy 编辑 | 德新4月7日,奇瑞在北京举办「新能源之夜」。整场发布会都在传递一个讯息:奇瑞搞新能源,要大搞特搞! 奇瑞在这场发布会上,对新能源的战略、技术、品牌和产品作了全面梳理。其中最引人注目的是&#x…

环信web、uniapp、微信小程序sdk报错详解---注册篇(二、三)

项目场景: 记录对接环信sdk时遇到的一系列问题,总结一下避免大家再次踩坑。这里主要针对于web、uniapp、微信小程序在对接环信sdk时遇到的问题。 注册篇(二) 注册用户报错400 原因分析: 从console控制台输出及network请求返回入手分析 可以看…

【三十天精通Vue 3】第十一天 Vue 3 过渡和动画详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录引言一、Vue 3 过度和动画概述1.1过度和动画的简介二、Vue 3 过度2…

Java 集合框架面试问题集锦

Java集合框架(例如基本的数据结构)里包含了最常见的Java常见面试问题。很好地理解集合框架,可以帮助你理解和利用Java的一些高级特性。下面是面试Java核心技术的一些很实用的问题。 Q:最常见的数据结构有哪些,在哪些场…

telnet远程管理linux主机及Zlib、openssl、openssh升级

目录 一、telnet远程管理主机 1、检查是否安装telnet 2、安装telnet服务 3、测试telnet登录 二、zlib、openssl、openssh升级 1、下载zlib包 2、下载openssl包 3、下载openssh包 4、 编译安装zlib 5、编译安装openssl 6、准备升级openssh环境 ①注意必须使用telne…

LLM 快人一步的秘籍 —— Zilliz Cloud,热门功能详解来啦!

最近,我们发布了可处理十亿级向量数据的 Zilliz Cloud GA 版本,为用户提供开箱即用的向量数据库服务,大大降低了数据库的运维成本。 看过上一篇文章《可处理十亿级向量数据!Zilliz Cloud GA 版本正式发布》的朋友们知道&#xff0…

【SSM】Spring6(十.面向切面编程AOP)

文章目录1.AOP2. AOP的七大术语3. 切点表达式4.使用Spring的AOP4.1 环境准备4.2 基于AspectJ的AOP注解式开发步骤4.3 所有通知类型4.4 切面顺序4.5 通用切点4.6 获取目标方法的方法签名4.7 全注解式开发4.8 基于XML配置的AOP5. 案例:事务处理1.AOP 将与核心业务无关…

Visual Studio Code跳转到CSS定义

Visual Studio Code 快速跳转到 VUE文件 或 CSS文件的定义位置(跳转到class定义,跳转到css定义),插件Css Peek、Vue Peek 对提升开发效率上,事半功倍。 目录 1、跳转到CSS定义 1.1、CSS Peek 1.2、Vue Peek 2、其他…

舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)

返回至系列文章导航博客 1 简介 在中医智能舌诊项目中需要舌体胖瘦的自动分析 舌体胖瘦是中医诊断中重要的观察依据,。胖大舌“舌色淡白,舌体胖嫩,比正常舌大而厚,甚至充满口腔”,主脾肾阳虚,气化失常&am…

C++无符号整型与有符号整型变量的运算-不简单

示例分析&#xff1a; #include<iostream> #include <stdio.h>struct Result {char c;char d;unsigned char e; };Result getChar(int x, int y) {Result res;unsigned int a x;(a y > 10) ? (res.c 1) : (res.c 2);res.d a y;res.e a y;return res; …

RHCE第一次作业at和cront两个任务管理程序的区别

1.at 单一执行的例行性工作&#xff1a;仅处理执行一次就结束了 -m 当任务完成之后&#xff0c;即使没有标准输出&#xff0c;将给用户发送邮件 -l atq的别名&#xff0c;可列出目前系统上面的所有该用户的at调度 -d atrm的别名,可以取消一个在at调度中的工作 -v 使用较明显的…

基于html+css的图片展示11

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

信息安全保障人员CISAW认证基础级、专业级通用认证条件

信息安全保障人员认证&#xff08;Certified Information Security Assurance Worker&#xff0c;简称“CISAW”&#xff09;是中国网络安全审查技术与认证中心针对信息安全保障领域不同专业技术方向、应用方向和保障岗位&#xff0c;依据国际标准ISO/IEC 17024《人员认证机构通…

HTTPS-TSL握手

HTTP一般基于TCP协议&#xff0c;而HTTPS就是在这之间加了SSL/TLS协议&#xff0c;那么在TCP三次握手建立TCP连接后&#xff0c;就需要TLS握手建立SSL/TLS连接。 TLS握手-流程 &#xff08;基于RSA算法&#xff09; &#xff08;1&#xff09;首先&#xff0c;客户端向服务器发…

Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】

Unity学习参考文档和开发工具 ☺ unity的官网文档&#xff1a;https://docs.unity3d.com/cn/current/Manual/ScriptingSection.html ■ 学习方式&#xff1a; 首先了解unity相关概述&#xff0c;快速认识unity编辑器&#xff0c;然后抓住重点的学&#xff1a;游戏对象、组件|…

【C++】1. 命名空间

文章目录一、命名空间的由来二、命名空间的使用2.1 关键字&#xff1a;namespace2.2 访问命名空间里的标识符2.3 命名空间的特点三、总结一、命名空间的由来 当我们使用c语言编写项目时&#xff0c;可能遇到以下情况&#xff1a; 变量名与某个库函数名重复&#xff0c;导致保…

sscanf和snprintf格式化时间字符串的日期与时间戳相互转换用法

sscanf格式化时间字符串的用法 UTC&#xff1a;Coordinated Universal Time 协调世界时。因为地球自转越来越慢&#xff0c;每年都会比前一年多出零点几秒&#xff0c;每隔几年协调世界时组织都会给世界时1秒&#xff0c;让基于原子钟的世界时和基于天文学&#xff08;人类感知…

测试技术与信号处理实验报告

目录 金属箔式应变片——单臂电桥性能实验 金属箔式应变片——半桥性能实验 金属箔式应变片——全桥性能实验 差动变压器的性能实验 直流全桥的应用——电子秤实验 交流激励时霍尔式传感器的位移特性实验 电容式传感器的位移实验 磁电式转速传感器测速实验 金属箔式应变…

C++ -- 继承

文章目录1. 继承的概念和定义1.1 概念1.2 定义1.2.1 定义格式1.2.2 继承基类成员访问方式的变化2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数5. 继承与友元6. 继承与静态成员7. 复杂的菱形继承及菱形虚拟继承8. 继承和组合1. 继承的概念和定义 1.1 概…