你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
发现
话题
全文搜索
登录
[]如果想做3d 模型的渐隐要怎么做? 我没找到关于透明度的属性
没有找到相关结果
已邀请:
与内容相关的链接
提交
2 个回复
cuixueying
赞同来自:
https://ask.layabox.com/question/4511
田正传
赞同来自:
一直困于这个问题,今天彻底解决了!就和大家分享一下!在Laya 3.0.4中运行正确。直接上代码:
下面这个类只要放在项目中,调用方法示例:objVisibleCtrl.showObj(this.meshs,0,3000) this.meshs是你要渐隐的MeshRenderer数组
---------------------------------------------------------------------------------------------------------------------------------------------
onst { regClass, property } = Laya;
@regClass()
export class objVisibleCtrl extends Laya.Script {
/**
* @param meshs 要改变透明度的MeshRenderer数组
* @param alpha 透明度的目标值
* @param duration 渐透明的过渡时间*/
public static showObj(meshs:[Laya.MeshRenderer],alpha:number,duration:number){
if (alpha>0.95) {
for (let i = 0; i < meshs.length; i++) {
for (let j = 0; j < meshs[i].materials.length; j++) {
let cr : Laya.Color = meshs[i].materials[j].getColor("u_DiffuseColor");
meshs[i].materials[j].materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
Laya.Tween.to(cr,{a:alpha,update:new Laya.Handler(this,()=>{meshs[i].materials[j].setColor("u_DiffuseColor",cr)})},duration,null,Laya.Handler.create(this,()=>{
meshs[i].material.materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_OPAQUE;
}))
}
}
}else if(alpha<0.1){
for (let i = 0; i < meshs.length; i++) {
for (let j = 0; j < meshs[i].materials.length; j++) {
let cr : Laya.Color = meshs[i].materials[j].getColor("u_DiffuseColor");
meshs[i].materials[j].materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
Laya.Tween.to(cr,{a:alpha,update:new Laya.Handler(this,()=>{meshs[i].materials[j].setColor("u_DiffuseColor",cr)})},duration,null,Laya.Handler.create(this,()=>{
meshs[i].material.materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
}))
}
}
}
}
}
要回复问题请先
登录
发起人
brekss
相关问题
Layaair IDE的帧属性面板不见了
加载到舞台的3D模型不显示贴图
微信小程序—未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。
unity中的模型导出后在laya中显示不正常
从unity导出的场景透贴和模型烘焙的灯光不显示,请问有知道是什么原因的吗?~~~~~~~~~~~~~
(Laya3.0非常严重BUG) 任意模型,只要坐标值越大,模型扭曲变形越严重
3D模型tween旋转
3D模型无法修改scale?
如何获取一个3D模型的长宽高?
如何导入3D模型,以及展示与编辑它
3D模型多维材质球渲染异常
问题状态
最新活动:
2023-09-11 09:52
浏览:
2223
关注:
4
人
商务合作
2 个回复
cuixueying
赞同来自:
田正传
赞同来自:
下面这个类只要放在项目中,调用方法示例:objVisibleCtrl.showObj(this.meshs,0,3000) this.meshs是你要渐隐的MeshRenderer数组
---------------------------------------------------------------------------------------------------------------------------------------------
onst { regClass, property } = Laya;
@regClass()
export class objVisibleCtrl extends Laya.Script {
/**
* @param meshs 要改变透明度的MeshRenderer数组
* @param alpha 透明度的目标值
* @param duration 渐透明的过渡时间*/
public static showObj(meshs:[Laya.MeshRenderer],alpha:number,duration:number){
if (alpha>0.95) {
for (let i = 0; i < meshs.length; i++) {
for (let j = 0; j < meshs[i].materials.length; j++) {
let cr : Laya.Color = meshs[i].materials[j].getColor("u_DiffuseColor");
meshs[i].materials[j].materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
Laya.Tween.to(cr,{a:alpha,update:new Laya.Handler(this,()=>{meshs[i].materials[j].setColor("u_DiffuseColor",cr)})},duration,null,Laya.Handler.create(this,()=>{
meshs[i].material.materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_OPAQUE;
}))
}
}
}else if(alpha<0.1){
for (let i = 0; i < meshs.length; i++) {
for (let j = 0; j < meshs[i].materials.length; j++) {
let cr : Laya.Color = meshs[i].materials[j].getColor("u_DiffuseColor");
meshs[i].materials[j].materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
Laya.Tween.to(cr,{a:alpha,update:new Laya.Handler(this,()=>{meshs[i].materials[j].setColor("u_DiffuseColor",cr)})},duration,null,Laya.Handler.create(this,()=>{
meshs[i].material.materialRenderMode = Laya.MaterialRenderMode.RENDERMODE_TRANSPARENT;
}))
}
}
}
}
}