官方教程是从摄像机发出一个垂直与摄像机的射线进行检测
// 根据点击的点获取一条由屏幕射向屏幕内的射线
let ray = camera.getRay(touchPos);
// 根据传入的根节点向下检测,并返回检测结果
// 返回的结果包含了节点和距离
let results = cc.geomUtils.intersect.raycast(cc.director.getScene(), ray);
for (let i = 0; i < results.length; i++) {
results[i].node.opacity = 100;
}
但是我想要一个自定义的射线,我找到了(cc as any).geomUtils.Ray,并且尝试
let worldLocation = this.node.convertToWorldSpaceAR(cc.Vec3.ZERO)
let ray = new (cc as any).geomUtils.Ray(worldLocation.x, worldLocation.y, worldLocation.z, 0, 0, -1);
let result = (cc as any).geomUtils.intersect.raycast(cc.director.getScene(), ray)
直接报错在检测时候
intersect.js:36 Uncaught TypeError: Cannot read property 'center' of null
at Object.rayAabb (intersect.js:36)
at intersect.js:233
at traversal (intersect.js:176)
at traversal (intersect.js:173)
at traversal (intersect.js:173)
at traversal (intersect.js:173)
at Object.raycast (intersect.js:221)