如何对光线投射做出不同的反应?(VR)



如何根据元素的类型做出不同的响应?

我想到的第一件事是检查网格的类型,但它不适用于像按钮(平面+文本+点击框(这样的复杂对象。

const squares = new Group();
const circles = new Group();
const spheres = new Group();
// skip meshes initialization
squares.add(squareMesh);
circles.add(circleMesh);
spheres.add(sphereMesh);
// skip raycaster initialization
const intersections = raycaster.intersectObjects([
squares,
circles,
spheres,
], true);
const intersectedElement = intersections[0];

例如:

如果Button,则更改文本的颜色

如果Sphere,则将其缩放两倍

解决此问题的一种方法是将自定义数据存储在Object3D.userData中。您可以自由定义满足您需求的数据结构。交叉测试后的评估代码可能如下所示:

const intersectedElement = intersections[0];
const object3D = intersectedElement.object;
if ( object3D.userData.objectType === 'Button' ) {
// change the color of the text
}

相关内容

  • 没有找到相关文章

最新更新