【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
        }
    }
}
相关推荐
CASAIM6 小时前
手持式三维激光扫描仪-3D扫描产品尺寸
3d·信息可视化
old_power1 天前
【PCL】Segmentation 模块—— 欧几里得聚类提取(Euclidean Cluster Extraction)
c++·计算机视觉·3d
3D小将1 天前
3D 模型格式转换之 STP 转 STL 深度解析
3d·建造者模式
Σίσυφος19001 天前
SLAM 6 3Dto2D 的Pnp 和光束平移法
3d
jndingxin2 天前
OpenCV相机标定与3D重建(62)根据两个投影矩阵和对应的图像点来计算3D空间中点的坐标函数triangulatePoints()的使用
opencv·3d
jndingxin2 天前
OpenCV相机标定与3D重建(61)处理未校准的立体图像对函数stereoRectifyUncalibrated()的使用
opencv·3d
jndingxin2 天前
OpenCV相机标定与3D重建(63)校正图像的畸变函数undistort()的使用
opencv·3d
卧式纯绿3 天前
自动驾驶3D目标检测综述(八)
人工智能·目标检测·3d·目标跟踪·cnn·自动驾驶
Ajaxm3 天前
3dgs代码+原理
计算机视觉·3d
paixiaoxin3 天前
解读CVPR2024-3DGS论文分享|DNGaussian: Optimizing Sparse-View 3D Gaussian Radiance Fields with .....
人工智能·深度学习·算法·机器学习·3d·cvpr·3dgs