【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
        }
    }
}
相关推荐
GISBox36 分钟前
零基础教学:用GISBox将RVT转为3DTiles
3d
狗蛋儿l3 小时前
qt 3d航迹图
开发语言·qt·3d
EQ-雪梨蛋花汤4 小时前
【3D基础】深入解析OBJ与MTL文件格式:Blender导出模型示例及3D开发应用
3d·blender
在下胡三汉6 小时前
导入使用 Blender 创建的 glTF/glb 格式的 3D 模型
3d·blender
_李小白8 小时前
【OSG学习笔记】Day 7: 材质与光照——让模型“活”起来
游戏·3d·材质
暴走约伯8 小时前
【3DMax脚本MaxScript开发:创建高效模型虚拟体绑定和材质管理系统,从3DMax到Unreal和Unity引擎_系列第一篇】
3d·unity·材质·unreal·maxscript
AgilityBaby1 天前
unity Animation学习,精准控制模型动画播放
学习·3d·unity·游戏引擎
Mu先生Ai世界1 天前
AI 生成 3D 技术解析:驱动力、价值主张与核心挑战 (AI+3D 产品经理笔记 S2E01)
人工智能·游戏·3d·aigc·transformer·产品经理·vr
cnbestec1 天前
Haply MinVerse触觉3D 鼠标—沉浸式数字操作,助力 3D 设计与仿真
3d·计算机外设·haply·minverse·minverse触觉3d鼠标·前沿科技