Laya 实操十七:物理引擎

2023-11-05

物理引擎

export default class test extends Laya.Script {
    constructor() { 
        super(); 
        Laya.Scene3D.load("res/LayaScene_SampleScene/Conventional/SampleScene.ls",Laya.Handler.create(this,this.on_scene_loaded))
    }
    
    on_scene_loaded(scene3d){
        Laya.stage.addChild(scene3d);

        var ball = scene3d.getChildByName("Sphere");
        var ball_phy = ball.getComponent(Laya.Rigidbody3D);
        ball_phy.restitution = 1;

        //ball_phy.linearDamping = 10;
        //ball_phy.linearVelocity = new Laya.Vector3(0,0,1);
        //ball_phy.applyForce(ball.transform.position,new Laya.Vector3(0,0,-10));

        var plane = scene3d.getChildByName("Plane");
        var plane_phy = plane.getComponent(Laya.PhysicsCollider);
        plane_phy.restitution = 1;
    }
}

 碰撞

import objCol from "./objCol";
export default class test extends Laya.Script {
    constructor() { 
        super(); 
        Laya.Scene3D.load("res/LayaScene_SampleScene/Conventional/SampleScene.ls",Laya.Handler.create(this,this.on_scene_loaded))
    }
    
    on_scene_loaded(scene3d){
        Laya.stage.addChild(scene3d);

        var ball = scene3d.getChildByName("Sphere");
        var ball_phy = ball.getComponent(Laya.Rigidbody3D);
        ball_phy.restitution = 1;

        //ball_phy.linearDamping = 10;
        //ball_phy.linearVelocity = new Laya.Vector3(0,0,1);
        //ball_phy.applyForce(ball.transform.position,new Laya.Vector3(0,0,-10));

        var plane = scene3d.getChildByName("Plane");
        var plane_phy = plane.getComponent(Laya.PhysicsComponent);
        plane_phy.restitution = 1;

        ball.addComponent(objCol);

        //ball_phy.detectCollisions = false;//关闭碰撞

        //是否碰撞
        ball.layer = 1;
        plane.layer = 2;
        ball_phy.collisionGroup = (1<<ball.layer);
        ball_phy.canCollideWith = (1<<ball.layer)|(1<<plane.layer)|(1<<0);
        plane_phy.collisionGroup = (1<<plane.layer);
        plane_phy.canCollideWith = (1<<ball.layer);
    }
}
export default class objCol extends Laya.Script3D {
    constructor() { super(); }

    onStart(){
        console.log(0);
    }
    
    OnCollisionEnter(collision){
        console.log("开始碰撞",collision.other.owner.name);
    }

    onCollisionStay(collision){
        console.log("持续碰撞",collision.other.owner.name);
    }

    onCollisionExit(collision){
        console.log("结束碰撞",collision.other.owner.name);
    }

    onTriggerEnter(other){
        console.log("开始触发",other.owner.name);
    }

    onTriggerStay(other){
        console.log("持续触发",other.owner.name);
    }

    onTriggerExit(other){
        console.log("结束触发",other.owner.name);
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laya 实操十七:物理引擎 的相关文章

  • 小程序 已被代码依赖分析忽略,无法被其他模块引用。你可根据控制台中的【代码依赖分析】告警信息修改代码,或关闭【过滤无依赖文件】功能

    出现以下错误 NO1 刚开始搜网说要在开发工具 右上角 详情 gt 本地设置 gt 上传时过滤无依赖文件 关闭即可 但是并没什么用其实 NO2 只需在 project config json gt setting 里面设置 ignoreUp
  • C++ Template 特化与重载

    特化与重载 1 重载函数模板 与普通函数一样 函数模板也可以重载 在重载函数模板的时候 应该把改变限制在一下两种情况 改变参数的数目或者显示地指定模板参数 除此之外 函数的所有重载版本的声明都应该位于该函数被调用的位置之前 P S 类模板是
  • osgEarth的Rex引擎原理分析(二十三)PagerLoader的traverse过程详解

    目标 十七 中问题48 主要包含两个过程 1 已处理过请求的加载 这是真正意义上的加载 刚创建出来的请求是从缓存或文件没有关联影像 高程等数据的 需要经过多线程处理后才有数据 详见 十七 对于这些处理过的请求 在PagerLoader的更新
  • android好书推荐

    准备买的书籍 一 Android系统级深入开发 移植与调试 作者 韩超 亚马逊 27 5元 电子书 我的csdn资源有 介绍怎样移植android系统到不同嵌入式平台 以android模拟器内核goldfish 高通MSM平台 德州仪器OM
  • C/C++中的结束输入条件判断 (scanf、EOF、getchar()、cin.get()、getline)

    本教程主要适用于一些程序比赛或大公司机试中的输入数据的处理 总的来说 可以分为以下三种情况 情况一 输入的测试样例有多组 每组需要相同逻辑的处理 处理方案 在C语言中可利用scanf d n EOF 在C 中可以使用while cin gt
  • 利用Vulnhub复现漏洞 - Gogs 任意用户登录漏洞(CVE-2018-18925)

    Gogs 任意用户登录漏洞 CVE 2018 18925 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 漏洞复现 失误原因 Vulnhub官方复现教程 https vulhub org environments gogs CVE
  • CTFSHOW WEB 1-100

    web入门 给她 1 参考文档 https blog csdn net weixin 51412071 article details 124270277 查看链接 sql注入 直接用这里的payload也可以 但是要构造万能密码 把and
  • 2021-05-04

    JAVA替换PDF文字
  • 小皮面板rce漏洞

    适用版本 V1 02版本以下 新版已修补该漏洞 复现 现在官网上的小皮面板 已经修复了该漏洞 所以已经无法用官网的版本来复现漏洞 据我目前不成熟的测试感觉 它在用户名的输入上限制了字符数 所以所以我们的js代码无法写入 小皮面板下载好后 会
  • 基于51单片机的大棚环境土壤湿度光强监测系统proteus仿真原理图PCB

    功能介绍 0 本系统采用STC89C52作为单片机 1 系统实时监测当前温湿度 土壤湿度 环境光强并显示 2 温湿度超过设定阈值范围 蜂鸣器响 同时开启对应控制继电器 3 土壤湿度低于设定下限 开启喷洒 直至达到上限 关闭喷洒 4 环境光强
  • 11、信息收集篇————钟馗之眼使用

    无意中发现了一个巨牛巨牛的人工智能教程 忍不住分享一下给大家 教程不仅是零基础 通俗易懂 小白也能学 而且非常风趣幽默 还时不时有内涵段子 像看小说一样 哈哈 我正在学习中 觉得太牛了 所以分享给大家 点这里可以跳转到教程 前言 ZoomE
  • 力扣26-删除排序数组中的重复项【双指针】

    给定一个排序数组 你需要在 原地 删除重复出现的元素 使得每个元素只出现一次 返回移除后数组的新长度 不要使用额外的数组空间 你必须在 原地 修改输入数组 并在使用 O 1 额外空间的条件下完成 示例 1 给定数组 nums 1 1 2 函
  • STM32使用内部晶振的配置方法

    STM32使用内部晶振的配置方法 首先 STM32使用内部晶振需要在代码里面配置 以STM32RCT6为例 在使用内部晶振的情况下最高运行频率为64Mhz 程序只需要在system stm32f10x c中配置即可 代码如下 复制以下代码覆
  • 启动盘制作

    启动盘 指的是将特殊改造过的精简Windows系统 安装到一个U盘上 上面有各种软件 可以用来调整硬盘分区 安装系统和破解密码 准备一个容量8G以上的U盘 里面的数据必须提前备份 在制作过程中 U盘会被格式化 下载微PE制作软件 建议下载w
  • Golang实现Telnet回音服务器

    码上见 package main import bufio fmt net os strings 服务端连接 func server address string exitChan chan int l err net Listen tcp
  • 【Vue】使用Vue调起摄像头,进行拍照并能保存到本地

    1 使用Vue js 把网页内容Ctrl s保存到本地然后添加到项目中 https cdn jsdelivr net npm vue dist vue jshttps cdn jsdelivr net npm vue dist vue js

随机推荐