【100个Cocos实例】快要圣诞节了,给大家支个招!

引言

Mask遮罩组件的一些简单实例

游戏开发 中常常需要在UI界面 上展示玩家的头像 或者Logo ,通常都会是正方形

偶尔 也会有一些奇形怪状 的需求,例如五边形、六边形、心形等等。

本文将介绍一下在Cocos 游戏开发中Mask遮罩组件 的一些简单实例,实现不同形状的头像

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

Mask(遮罩)组件

Mask 用于规定 子节点可渲染的范围 ,默认带有 Mask 组件的节点会使用该节点的约束框 (也就是 属性检查器 中 Node 组件的 ContentSize 规定的范围)创建一个矩形渲染遮罩 ,该节点的所有子节点 都会依据这个遮罩进行裁剪 ,遮罩范围外的将不会渲染

根据概念可以理解,Mask组件具有裁剪功能 。我们先来看看它有几种裁剪方式

  • GRAPHICS_RECT,矩形遮罩,这个和我们平时截图类似,只保留矩形框内的内容,矩形框外的不显示。

  • GRAPHICS_ELLIPSE ,椭圆遮罩,他有一个属性Segments曲线细分数,设置为3 时表现为三角形,依次类推四边形、五边形、六边形、 ... 、圆形(64很圆)。

  • GRAPHICS_STENCIL ,自定义图形遮罩,设置成这个之后,我们可以在代码里通过Graphics组件绘制自己想要的形状进行裁剪,常用来绘制圆角头像。

  • SPRITE_STENCIL,自定义图片遮罩,以我们设定的图片作为遮罩的形状,可以通过美术提供的奇形怪状的头像框进行裁剪。

话不多说,一起来做个实例。

Mask遮罩组件的一些简单实例

接下来我们一步一步来 实现Mask遮罩组件 的一些简单实例,实现不同形状的头像。

1.环境

引擎版本:Cocos Creator 3.8.1

编程语言:TypeScript

2.资源准备

首先准备各种各样头像框 和我的头像不要问我从哪里来,他们的故乡来自互联网

UI 准备好了准备开搞。Mask组件 只会对它所在节点下的子节点进行裁剪

3.开始制作

  • 圣诞老人

这里使用了矩形遮罩。

裁剪保留矩形内的(圣诞老人的脸)内容。

  • 排行榜第一

这里使用了椭圆遮罩。其中Segments属性设置为64,表现为圆形。

裁剪保留圆形内的内容。

直观的裁剪效果。

Segments设置为8的效果。

  • 心形、圣诞树

这里使用了自定义图片遮罩。

目标图片为心形和圣诞树。

头像裁剪成图片的形状。

圣诞树上下部分彩色的非裁剪效果,是SpriteFILLED效果。

结果如下。

  • 圆角头像

这里使用自定义图形遮罩。

设置之后,添加一个MaskTest组件。

typescript 复制代码
import { _decorator, Component, Graphics, Node } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('MaskTest')
export class MaskTest extends Component {
    start() {
        const graphics = this.getComponent(Graphics);
        // 设置线宽和填充颜色
        graphics.lineWidth = 2;
        // 设置四个角的圆半径
        const cornerRadius = 20;
        // 绘制带有圆角的矩形
        graphics.roundRect(-50, -50, 100, 100, cornerRadius);
        graphics.fill();
    }
}

直接通过roundRect方法绘制圆角矩形。

  • 其他

Inverted属性,反向遮罩,勾选之后进行反向遮罩。

即原本应该保留的内容裁剪掉,原来应该裁剪的保留。

4.效果演示

今天的节目到此为止。帮忙转发一下文章哦,下课!

结语

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

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

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

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

推荐专栏:

100个Cocos实例

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

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

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

知识付费专栏

相关推荐
Asize11 分钟前
HTTP 明明无状态,登录态怎么就保住了——React + Zustand + JWT 鉴权全流程拆解
前端·javascript
两只羊ovo18 分钟前
MCP:AI 界的 USB-C,把模型和世界「插」起来
前端
Darling噜啦啦22 分钟前
JWT 登录鉴权全链路:从 Zustand 状态管理到 Axios 拦截器,彻底搞懂前端鉴权工程
前端
可涵不会debug25 分钟前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
Csvn26 分钟前
😱 React `<StrictMode>`:为什么 useEffect 被调用了两次?别慌,这是特性不是 bug
前端
Asize30 分钟前
2 道大厂面试题:TS 工具类型我懂了,CSS 3 列布局把我问住了
前端·css·typescript
胡萝卜术33 分钟前
从"氛围编程"到规范驱动:两次创造如何让 AI 协作从碰运气变成工程流水线
前端·面试·github
Imchendiana35 分钟前
《狂人日记NO.11》— 给 AI 装一本"项目说明书":我把"自己"蒸馏成了一个编码知识库Skill
前端·ai编程
l12586536 分钟前
# RAG多轮对话检索设计:Query重写如何让“那它呢“变成完整问题
前端·数据库·人工智能·python·算法·fastapi·milvus
এ慕ོ冬℘゜39 分钟前
前端实战:使用 jQuery 与 CSS3 打造动态数据表格与滑块交互
前端·css3·jquery