环境: Layaair  1.7.22

Unity3d 5.6.3

实现效果:

  1. unity3d 导出 场景文件
  2. 动画的控制
  3. Laya.Sprite3D 脚本的挂载
  4. 对于Laya.Sprite3D 碰撞的触发实现

Unity3D 中的场景

程序入口

 // 程序入口
class GameMain {constructor() {//初始化引擎Laya3D.init(0, 0, true);//适配模式Laya.stage.scaleMode = Laya.Stage.SCALE_FULL;Laya.stage.screenMode = Laya.Stage.SCREEN_NONE;//开启统计信息Laya.Stat.show();//添加3D场景//var scene: Laya.Scene = Laya.stage.addChild(new Laya.Scene()) as Laya.Scene;// //添加照相机// var camera: Laya.Camera = (scene.addChild(new Laya.Camera(0, 0.1, 100))) as Laya.Camera;// camera.transform.translate(new Laya.Vector3(0, 3, 3));// camera.transform.rotate(new Laya.Vector3(-30, 0, 0), true, false);// camera.clearColor = null;//添加方向光// var directionLight: Laya.DirectionLight = scene.addChild(new Laya.DirectionLight()) as Laya.DirectionLight;// directionLight.color = new Laya.Vector3(0.6, 0.6, 0.6);// directionLight.direction = new Laya.Vector3(1, -1, 0);// //添加自定义模型// var box: Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.BoxMesh(1, 1, 1))) as Laya.MeshSprite3D;// box.transform.rotate(new Laya.Vector3(0, 45, 0), false, false);// var material: Laya.StandardMaterial = new Laya.StandardMaterial();// material.diffuseTexture = Laya.Texture2D.load("res/layabox.png");// box.meshRender.material = material;///需要加载的3D资源列表  和 UI资源  let resArray : Array<any> = [{ url:"res/Rources3D/LayaScene_Shooting/Shooting.ls",   type:SceneBehavior, clas:SceneBehavior}, //3D 场景{ url:"res/atlas/comp.atlas",                           type:Laya.Loader.ATLAS}, ];            Laya.loader.create(resArray, Laya.Handler.create(this,this.onCompelt),Laya.Handler.create(this, this.onProgress));}//加载完成private onCompelt():void   {let scene:SceneBehavior   =  Laya.loader.getRes("res/Rources3D/LayaScene_Shooting/Shooting.ls");Laya.stage.addChild(scene);    //  var directionLight: Laya.DirectionLight = scene.addChild(new Laya.DirectionLight()) as Laya.DirectionLight;//  directionLight.color = new Laya.Vector3(0.6, 0.6, 0.6);//  directionLight.direction = new Laya.Vector3(1, -1, 0);  let camera = scene.Camar;camera.addComponent(CamerBehavior);let ball :Laya.MeshSprite3D = scene.Ball;ball.addComponent(BallBehavior);let wall : Laya.Sprite3D = scene.Wall;wall.addComponent(WallBehavior);let cube : Laya.Sprite3D = scene.Cube;cube.addComponent(CubeBehavior);let rigid:Laya.Sprite3D = scene.BallRigid;rigid.addComponent(RigidbodyBehavior);//  console.log("position.name:",ball.name);//  console.log("position:",ball.transform.position);let uiMain:UiGameMain =new UiGameMain(cube.getComponentByType(CubeBehavior));Laya.stage.addChild(uiMain);}//加载进度private onProgress(pro:number):void{console.log("加载进度:"+pro);}
}
new GameMain();

clas:SceneBehavior  是我们自定义的场景 类型

加载完成之后 就直接把我们的资源 和 SceneBehavior 绑定了

 /*
* Scene 场景管理;
*/
class SceneBehavior extends Laya.Scene {public get Ball():Laya.MeshSprite3D {return this.getChildAt(3) as Laya.MeshSprite3D;}public get Wall():Laya.MeshSprite3D {return  this.getChildAt(2) as Laya.MeshSprite3D;}public get Camar():Laya.MeshSprite3D {return this.getChildAt(0) as Laya.MeshSprite3D;}public get Cube():Laya.MeshSprite3D {return this.getChildAt(4) as Laya.MeshSprite3D;}public get BallRigid():Laya.MeshSprite3D {return this.getChildAt(5) as Laya.MeshSprite3D;}constructor(){super();console.log("SceneBehavior");}}

场景中是有 动画 播放的 处理脚本在 这里

 /*
* name;
*/
class UiGameMain extends ui.MainSceneUI{private cube:CubeBehavior; private ani:Laya.Animator;constructor(cube:laya.d3.component.Component3D){super();this.on(Laya.Event.CLICK, this, this.onClick);       this.cube = cube as CubeBehavior;this.ani  = this.cube.gameobject.getComponentByType(Laya.Animator) as Laya.Animator;}private onClick(e:Laya.Event):void{switch(e.target){case this.btn_Play:console.log("btn_Play");//this.ani.currentPlayClip;this.ani.play("move");thisbreak;case this.btn_stop:console.log("btn_stop");this.ani.play("idle");break;case this.btn_add:break;}      }}

碰撞触发器在这里

  • /*
    * name;
    */
    class CubeBehavior extends Laya.Script{public gameobject:Laya.Sprite3D;constructor(){super()}public _initialize(owner: Laya.Sprite3D): void {super._initialize(owner);this.gameobject = owner;}///碰撞器和 触发器的区别是 一个可以穿透 一个不可以//触发器 开始 可以触发public onTriggerEnter(other: Laya.Collider): void{console.log("cube==> onTriggerEnter");}public onTriggerExit(other: Laya.Collider): void{console.log("cube==> onTriggerExit");}public onTriggerStay(other: Laya.Collider): void{// console.log("cube==> onTriggerStay");}//触发器 完//碰撞器 不可以触发public  onCollisionEnter(collision:Laya.Collision):void{console.log("cube==> onCollisionEnter");}public  onCollisionStay(collision:Laya.Collision):void{}public  onCollisionExit(collision:Laya.Collision):void{console.log("cube==> onCollisionExit");}//碰撞器
    }

    这里上传了 U3D 和 Layaair 的工程

Layaair 3D场景使用相关推荐

  1. Layaair 3D资源加载(Unity3D 导出资源)

    Layaair 3D资源加载 layaair 预加载3D资源(Unity3D 导出资源)  和  2D 资源还是有些区别的. 2D资源的预加载 https://blog.csdn.net/nicepa ...

  2. 将Uity中的3D场景导入Laya并在Chrome浏览器中显示

    本文将实现将Unity中的3D场景通过插件导出到Laya2.0,并在Chrome中显示出来 1:将3D场景需要的模型导入Unity,并将LayaAir插件导入 插件下载地址https://ldc2.l ...

  3. 线上分享会预告之深度学习在3D场景中的应用

    大家好.上周我们迎来了第一期的线上分享,三维模型检索技术介绍,此次分享是一次接力形式的分享,每周都将有一位主讲人分享,希望更多的小伙伴加入我们一起分享,也是给自己一个机会锻炼.这里先预告一下,线上直播 ...

  4. 3D场景高级合成技术学习

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch |语言:英语+中英文字幕(根据原英文字幕机译更准确)|时长:3h 47m |大小解压后:3.61 GB 含课程文 ...

  5. 基于全局场景背景图和关系优化的全景3D场景理解(ICCV 2021)

    DeepPanoContext: 基于全局场景背景图和关系优化的全景3D场景理解(ICCV 2021) 论文标题:DeepPanoContext: Panoramic 3D Scene Underst ...

  6. Pri3D:一种利用RGB-D数据固有属性完成3D场景感知的表示学习方法

    Pri3D:Can 3D Priors Help 2D Representation Learning? (ICCV2021) 代码地址:https://github.com/Sekunde/Pri3 ...

  7. 假3D场景逼真到火爆外网!超1亿像素无死角,被赞AI渲染新高度

    萧箫 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 先来看一段"视频",有没有看出什么不对劲的地方? 其实,这仅仅是由一组照片渲染出来的(右下角为拍摄照片)! 生成的 ...

  8. CVPR2021最佳论文:当GAN遇到3D场景,无需监督就学会“动态抠图”、360度展示对象...

    月石一 发自 凹非寺 量子位 报道 | 公众号 QbitAI GAN又又又有新玩法了! 人脸?NO,NO,NO~ 这回,开发者利用「3D+GAN」生成了汽车大片,还是能360度展示.随手换背景那种. ...

  9. Goolge新AI算法实时生成3D场景 | 可下载

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 3D模型又有新玩法,Goolge的新AI算法实时生成3D场景!对于3D.AR/VR来说,三维重建.模型 ...

  10. 今年CVPR,我们填补了3D场景布局数据集空白,并向全世界开源!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 6月14日,"Learning 3D Generative Model" Work ...

最新文章

  1. 修改title样式_css常见样式命名规则
  2. ubuntu使用KVM创建虚拟机
  3. HDU4417 Super Mario 主席树
  4. C#将dataGridView中显示的数据导出到Excel(大数据量超实用版)
  5. 本地未安装Oracle数据库,如何连接远程Oracle数据库
  6. [BZOJ4568][SCOI2016]幸运数字(倍增LCA,点分治+线性基)
  7. perl多进程实战之一
  8. js回文数的四种判断方法
  9. python 3 并发编程之多进程 multiprocessing模块
  10. 解决php截取文字乱码问题
  11. js 根据公历日期 算出农历_JS简单获取当前日期和农历日期的方法
  12. 几何分布的期望和方差公式推导_GPR(高斯过程回归)详细推导
  13. 外卖小程序源码java后台_扫码点餐系统小程序源码搭建开发
  14. 海南信用社计算机试题,2015年海南农村信用社考试试题——计算机基础知识一...
  15. Lingo 中的各种函数
  16. koa-redis + ioredis
  17. SSL证书转换:cer转jks,pfx转jks
  18. 卸载Symantec Endpoint Protection, 无需password的卸载方法
  19. Elasticsearch - DSL 查询语句
  20. 2.1 中位数、平均值、众数的总结

热门文章

  1. uniapp-连接服务器超时,点击重试
  2. suse下oracle静默安装,SUSE Linux Enterprise 11SP1静默安装Oracle 11gR2说明文档.doc
  3. 2022,从阅读开始
  4. GitHub学生优惠:repl.it 使用--Python爬虫示例
  5. 管理故事:无知的小沙弥
  6. 中线提取算法_基于Guided Filter的地形图中线要素提取算法
  7. Android5.0 下拉通知栏快捷开关的添加(必看)
  8. 学历不高的人,去学这5个技术,好找工作,上班也不累
  9. 水晶报表中几种交叉表的实现方法 (作者阿泰)
  10. 口袋的天空(洛谷 P1195)