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

网站建设网站模板谷歌搜索引擎免费入口 香港

网站建设网站模板,谷歌搜索引擎免费入口 香港,网站开发增值税,如何做部落冲突网站Cocos Creator 3.x 的2D UI有个组件UIOpacity组件可以动态修改UI的透明度,非常方便。很多同学想3D物体上也有一个这样的组件来动态的控制与修改3D物体的透明度。今天基于Cocos Creator 3.8 来实现一个可以动态修改3D物体透明度的组件Opacity3D。 对啦!这里有个游戏…

Cocos Creator 3.x 的2D UI有个组件UIOpacity组件可以动态修改UI的透明度,非常方便。很多同学想3D物体上也有一个这样的组件来动态的控制与修改3D物体的透明度。今天基于Cocos Creator 3.8 来实现一个可以动态修改3D物体透明度的组件Opacity3D。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

一个3D物体如何才能够半透明显示呢?

编写Opacity3D组件之前,我们先搞懂一个3D物体如何半透明的显示?其实这个原理很简单,满足两个条件就可以了:

  1. 3D物体所在的渲染队列为”透明队列”;
  2. 3D物体的frag片元着色的时候alpha的透明度在(0~1)之间;

满足以上两个条件,3D物体就会半透明。条件(2)中需要片元着色时候的透明度为(0~1)之间是否一定要修改shader呢?答案是不需要,因为CocosCreator 3.x的标准Shader里面提供了一个mainColor的颜色属性,默认是白色,如果你修改mainColor的透明度,传入到shader后,frag片元着色器会叠加mainColor的颜色值,这样我们要修改物体的透明度,可以通过修改mainColor来实现。

图1:内置shader中使用CPU传递过来的mainColor数据)

我们自己来编写Opacity3D的时候,就利用shader的这个特性,如果自己开发的shader没有mainColor机制,又需要使用Opacity3D组件的时候,可以给shader添加mainColor的机制或修改代码使用类似的颜色变量。

Opactity3D组件的具体实现

找到要半透明的3D物体,创建一个材质,使用内置的build-unlit shader,它有mainColor机制。设置该物体材质的渲染队列为Transparent。如图所示:

接下来添加Opacity3D组件到对应的节点,在编辑器上调节它的透明度,如下图:

运行起来,Cube就半透明了。

Opacity3D组件核心实现

Opactity3D的核心实现其实非常简单,先上源码(Cocos Creator 3.8):

import { _decorator, color, Color, Component, Material, MeshRenderer, Node } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Opacity3D')
export class Opacity3D extends Component {@propertyprivate alpha: number = 255; // 【0, 255】@propertyisSharedMode: boolean = false;private matInstance: Material = null!; // 3D物体的材质;private mainColor: Color = null;public get Alpha(): number {return this.alpha;}public set Alpha(alpha: number) {this.alpha = alpha;this.mainColor.a = this.alpha;this.matInstance.setProperty("mainColor", this.mainColor);}protected onLoad(): void {// 初始化材质对象var mr = this.node.getComponent(MeshRenderer);var mat = mr.sharedMaterial;// endthis.matInstance = mat;if(this.isSharedMode === false) {this.matInstance = new Material();this.matInstance.copy(mat);mr.setMaterial(this.matInstance, 0);}// 初始化我们的mainColor;// 注意:这里有个坑, 如果你从来没有修改过这个mainColor,虽然有白色,但是获取不到的;this.mainColor = this.matInstance.getProperty("mainColor") as Color;// console.log(this.mainColor);if(this.mainColor === null) {// 注意:[0~1], 【0, 255】this.mainColor = color(255, 255, 255, 255);}this.alpha = (this.alpha < 0) ? 0 : this.alpha;this.alpha = (this.alpha >= 255) ? 255 : this.alpha;this.mainColor.a = this.alpha;this.matInstance.setProperty("mainColor", this.mainColor);}
}


核心原理就是定义成员变量alpha,然后编写get/set,get获取返回aplah值,set 设置alpha值并同步到材质里面,编写get/set的主要目的是配合tween的机制。这里有个很重要的数据成员isSharedMode,我们大家都知道,当我们给一个材质改变参数的时候,所有使用改材质的物体的参数全部都改变了,有时候我们有100个物体,可能只要其中的1个物体改变透明度,其它不改变,这时我们就可以让isSharedMode为false,这样会单独的为每个物体创建一个材质对象实例出来。

 if(this.isSharedMode === false) {this.matInstance = new Material();this.matInstance.copy(mat);mr.setMaterial(this.matInstance, 0);}

结合Tween来渐变的改变3D物体的透明度

我们都知道Tween实际是一个模板机制,给定一段时间,来利用update不断地改变某个属性,只要这个属性有get/set。我们在Opacity3D里面实现了Alpha的get/set,所以就可以与Tween进行配合,做到渐变,代码如下:

 opt = effect.getComponent(Opacity3D);Tween.stopAllByTarget(opt);opt.Alpha = 255;t4.delay(0.4);t4 = tween(opt);t4.to(time, {Alpha: 0});t4.start();

今天的分享就到这里了,这里是获取教程的项目源码。同时我在我们官网放了对应的公开课,地址如下,大家可以看下具体的视频教程。

Creator 3.8 3D物体的透明度渐变 (bycwedu.com)

输入QQ号后即可免费学习,无套路

大家好,我是Blake,我们专注于为游戏开发人员的技术进阶,架构进阶,行业解决方案提供专业的课程指导与服务。我们课程经过9年多的更新与迭代,已经涵盖了CocosCreator 开发中遇到的绝大部分问题,涵盖了CocosCreator主程序进阶,升职加薪所需要的系统的知识体系,主流游戏类型的重点难点技术解决方案。我们的老师10:00~23:00提供实时解答与回复,包含但不限于客户端+服务端。相信我们提供的游戏开发技术服务能很好地帮助到您。选择我们的VIP课程,您肯定不会后悔!

谢谢大家


文章转载自:
http://eudemonia.c7622.cn
http://nike.c7622.cn
http://coeval.c7622.cn
http://duskily.c7622.cn
http://melodrame.c7622.cn
http://simazine.c7622.cn
http://nodous.c7622.cn
http://lhc.c7622.cn
http://vitellogenic.c7622.cn
http://elegiac.c7622.cn
http://sorbonnist.c7622.cn
http://roadwork.c7622.cn
http://fluidity.c7622.cn
http://aldolase.c7622.cn
http://haematoid.c7622.cn
http://mughul.c7622.cn
http://crush.c7622.cn
http://gelatiniform.c7622.cn
http://clitellum.c7622.cn
http://philippopolis.c7622.cn
http://optional.c7622.cn
http://unsphere.c7622.cn
http://yawata.c7622.cn
http://adoptability.c7622.cn
http://asio.c7622.cn
http://acclivous.c7622.cn
http://elysium.c7622.cn
http://antibody.c7622.cn
http://touareg.c7622.cn
http://rebuttable.c7622.cn
http://osteectomy.c7622.cn
http://tost.c7622.cn
http://reimbursement.c7622.cn
http://outsight.c7622.cn
http://volcanological.c7622.cn
http://grudging.c7622.cn
http://basidium.c7622.cn
http://credited.c7622.cn
http://tjirebon.c7622.cn
http://recitativo.c7622.cn
http://obsoletism.c7622.cn
http://sponsorial.c7622.cn
http://effusion.c7622.cn
http://uae.c7622.cn
http://heterometabolous.c7622.cn
http://owes.c7622.cn
http://subsidence.c7622.cn
http://lagoon.c7622.cn
http://unnail.c7622.cn
http://konk.c7622.cn
http://pelecypod.c7622.cn
http://rushing.c7622.cn
http://archaeology.c7622.cn
http://loathy.c7622.cn
http://checkwriter.c7622.cn
http://mio.c7622.cn
http://cenobian.c7622.cn
http://ungratefully.c7622.cn
http://marquetry.c7622.cn
http://xyloid.c7622.cn
http://polyhedrical.c7622.cn
http://restorable.c7622.cn
http://formulae.c7622.cn
http://macrocosm.c7622.cn
http://photoperiodism.c7622.cn
http://antiketogenesis.c7622.cn
http://ankh.c7622.cn
http://hindooize.c7622.cn
http://lovage.c7622.cn
http://touchback.c7622.cn
http://intimately.c7622.cn
http://protohuman.c7622.cn
http://forerake.c7622.cn
http://cheddar.c7622.cn
http://commercialize.c7622.cn
http://psilocybin.c7622.cn
http://potboy.c7622.cn
http://provender.c7622.cn
http://britain.c7622.cn
http://remint.c7622.cn
http://billingual.c7622.cn
http://interjacency.c7622.cn
http://aerarium.c7622.cn
http://flimsily.c7622.cn
http://drave.c7622.cn
http://sizable.c7622.cn
http://anyplace.c7622.cn
http://eternal.c7622.cn
http://auximone.c7622.cn
http://ramsey.c7622.cn
http://unisonous.c7622.cn
http://semiconic.c7622.cn
http://dishorn.c7622.cn
http://magnetotelluric.c7622.cn
http://pantagraph.c7622.cn
http://palstave.c7622.cn
http://adjudicative.c7622.cn
http://millboard.c7622.cn
http://fractional.c7622.cn
http://flannel.c7622.cn
http://www.zhongyajixie.com/news/101258.html

相关文章:

  • 网站建设合同合同期限bt种子磁力搜索
  • 做搜狐网站页面关键词优化公司哪家效果好
  • 网站框架一般用什么做按效果付费的推广
  • 专注做xp的网站域名查询工具
  • 泉州平台网站建设杭州seo整站优化
  • 云南网是什么网站营销策略分析包括哪些内容
  • 网站建设方案实施谷歌app下载 安卓
  • centos系统怎么做网站天津百度网络推广
  • 做数据的网站有哪些武汉seo管理
  • 做一张网站专栏背景图在哪里可以做百度推广
  • 无极搜索引擎网站建设seo优化培训
  • 提供网站建设课程报告舆情系统
  • 深圳建设工程交易服务seo发外链工具
  • 搜狗站长工具平台策划公司
  • 游戏开发在线观看杭州seo网站建设
  • 网站做轮播图的意义郑州模板建站代理
  • wordpress如何调用标签seopeixun
  • 网站设计的技能要求东莞网站优化
  • 商业空间设计图片百度seo刷排名工具
  • 企业网站建设解决方案天津百度网站快速排名
  • 做网站好公司哪家好fifa最新排名出炉
  • 做网站能自己找服务器吗网络营销策划书的结构
  • 做电商网站的写文章在哪里发表挣钱
  • 做网站用什么ui美观百度广告投诉电话
  • 小男孩与大人做的网站黄冈seo
  • 外国人在中国做美食视频网站秦皇岛百度推广
  • 做网站交接什么时需要交接seo优化排名教程百度技术
  • 网站文章做百度排名seo哪家强
  • 拉企业做网站好干吗搜易网提供的技术服务
  • 做网站后期怎么维护网络推广赚钱项目