Hi,
I made three layers.
And I wanted to swap the collide layers using drag up & down.
first, create layers.
createCylinderLayer = (radiusTop, radiusBottom, height, radialSegments) => {
let Geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, height, radialSegments);
let Material = new THREE.MeshBasicMaterial( {color: 0x9fb0bc , transparent: true, opacity: 0.5} );
let Floor = new THREE.Mesh(Geometry , Material );
three.scene.add(Floor );
}
next, check collision at drag layers ( example of a collision script )
checkCollision = () => {
for (var vertexIndex = 0; vertexIndex < _draggingObject.geometry.vertices.length; vertexIndex++) {
var localVertex = _draggingObject.geometry.vertices[vertexIndex].clone();
var globalVertex = localVertex.applyMatrix4(_draggingObject.matrix);
var directionVector = globalVertex.sub(_draggingObject.position);
var ray = new THREE.Raycaster(originPoint, directionVector.clone().normalize());
var collisionResults = ray.intersectObjects(_arrayLayer);
if (collisionResults.length > 0 && collisionResults[0].distance < directionVector.length()) {
collisionResults[0].object.material.transparent = true;
collisionResults[0].object.material.opacity = 0.4;
}
}
}
but, _draggingObject.geometry.vertices is undefined !!
is it wrong way to check collision two object?