如何根据元素的类型做出不同的反应?
我想到的第一件事是检查网格的类型,但是它不适用于按钮(平面+文本+ Hitbox)之类的复杂对象。
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
则将其缩放两次
答案 0 :(得分:3)
解决此问题的一种方法是将自定义数据存储在Object3D.userData中。您可以自由定义满足您需求的数据结构。交集测试后的评估代码如下:
const intersectedElement = intersections[0];
const object3D = intersectedElement.object;
if ( object3D.userData.objectType === 'Button' ) {
// change the color of the text
}