У меня есть несколько дней, когда я пытался создать столкновение для 2 объектов, которые могут определить последнюю позицию до того, как произошло столкновение, и могут плавно перетаскивать каждый выбранный объект, не останавливаясь, каждый раз, когда сталкиваются. любая помощь может найти лучшее решение? Я буду признателен, если вы посмотрите на мой код https://jsfiddle.net/minamagdy666/o1jLgv7u/102/
function onObjectChange(){
let cooldown = false; // cooldown reset when try-again clicked
let cooldown2 = false;
let objectMesh = SELECTEDOBJECT[0].children[Object.keys(SELECTEDOBJECT[0].children)[Object.keys(SELECTEDOBJECT[0].children).length - 1]];
let originPoint = SELECTEDOBJECT[0].position.clone();
if (cooldown === false) {
for (var vertexIndex = 0; vertexIndex < objectMesh.geometry.vertices.length; vertexIndex++) {
var localVertex = objectMesh.geometry.vertices[vertexIndex].clone();
var globalVertex = localVertex.applyMatrix4( objectMesh.matrix );
var directionVector = globalVertex.sub( objectMesh.position );
var raycaster = new THREE.Raycaster( originPoint, directionVector.clone().normalize() );
//objects.splice(SELECTEDOBJECT[1],1);
var collisionResults = raycaster.intersectObjects( objects, true );
var collideStatus = false;
if ( collisionResults.length > 0 && collisionResults[0].distance < directionVector.length()) {
console.log(originPoint);
control.dragging = false;
collideStatus = true;
if(collideStatus == true){
lastPosition = originPoint;
cooldown = true;
orbit.enabled = false;
console.log(lastPosition);
}
}
}
}
}