【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
        }
    }
}
相关推荐
yychen_java20 小时前
基于Java3D与Jzy3D的三维建模深度开发:从架构到实践
java·3d·架构
暴风鱼划水2 天前
三维重建【0-D】3D Gaussian Splatting:相机标定原理与步骤
算法·3d
井队Tell2 天前
打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第十天)
学习·3d·unity
wenjie学长2 天前
[3D Max 基础知识分享]—多孔结构模型制作与编辑
3d·三维模型·多孔结构模型编辑
阿登林2 天前
Unity3D与Three.js构建3D可视化模型技术对比分析
开发语言·javascript·3d
时间的情敌2 天前
Vue3+CSS 实现3D卡片动画
前端·css·3d
J_Xiong01172 天前
【VLNs篇】11:Dynam3D: 动态分层3D令牌赋能视觉语言导航中的VLM
人工智能·算法·3d
光锥智能2 天前
具身智能3D数字人开放平台「星云」发布:魔珐科技让AI第一次拥有“身体”
人工智能·科技·3d
苏州知芯传感2 天前
赋能智能制造:基于MEMS微振镜的高精度动态3D机器视觉
数码相机·3d·制造
DO_Community3 天前
利用腾讯开源 Hunyuan3D 2.1:在 DigitalOcean GPU Droplet 上快速搭建 3D 模型
人工智能·3d·开源·llm·aigc·大语言模型