【cocos creator】2.x里,使用3D射线碰撞检测

注意点:

1、开启射线检测

cc.director.getPhysics3DManager().enabled = true;

2: 响应射线的物体要加3D碰撞盒 BoxCollider3D

3:响应射线的物体分组group要设置为3D,分组管理里需要勾选3D和3D的碰撞

demo下载:

https://download.csdn.net/download/K86338236/89527924

typescript 复制代码
const { ccclass, property } = cc._decorator;

@ccclass
export default class CameraTouchCtrl extends cc.Component {

    @property(cc.Camera)
    camera: cc.Camera = null;//3D相机

    @property(cc.Node)
    touchNode: cc.Node = null;//2D触摸节点
    start() {
        //开启射线检测
        cc.director.getPhysics3DManager().enabled = true;
        this.touchNode.on(cc.Node.EventType.TOUCH_START, this.onTouchStart, this);
    }

    /**检测射线 */
    onTouchStart(event) {
        let touchLoc = event.touch.getLocation();
        let ray = this.camera.getComponent(cc.Camera).getRay(touchLoc);
        let maxDistance = 1000;//检测的最远距离,如果物体远,需要改大数值
        let rayColliderGroupName = "3D";//碰撞分组,分组管理里需要勾选3D和3D动碰撞
        //响应射线的物体要加3D碰撞盒 BoxCollider3D,分组group设置为3D
        const result = cc.director.getPhysics3DManager().raycastClosest(ray, rayColliderGroupName, maxDistance, false);
        if (result) {
            let box = result.collider.node
            box.scale += 0.01
        }
    }
}
相关推荐
ww大魔王丷7 小时前
python绘制3D瀑布图
开发语言·python·3d
weixin_505154469 小时前
博物馆如何实现3D交互控制展示?
3d·数字孪生·数据可视化·3d产品配置器·3d产品交互展示·3d交互设计工具
refineiks21 小时前
three.js使用3DTilesRendererJS加载3d tiles数据
前端·3d·图形渲染·webgl
hxxjxw21 小时前
python绘制3d建筑
开发语言·python·3d
AiFlutter1 天前
Flutter 使用第三方包加载3d模型
flutter·3d
新拓三维2 天前
DIC技术助力新能源汽车主机厂力学测试研发与整车性能提升
计算机视觉·3d·汽车
jimumeta3 天前
线上VR虚拟展厅里可以展示3D模型么?
3d·vr·虚拟展厅·3d模型·视创云展
Android技术栈3 天前
鸿蒙(API 12 Beta6版)【ArkGraphics 3D场景搭建以及管理】方舟3D图形
3d·华为·harmonyos·鸿蒙·鸿蒙系统·openharmony·图形
Verdure陌矣4 天前
C++项目引入开源库bit7z
开发语言·c++·3d·github
小彭努力中4 天前
9. 相机控件OrbitControls
前端·3d