Соберите два объекта, используя TransformControls, перетаскивая на ТРИ. JS - PullRequest
0 голосов
/ 02 марта 2020

У меня есть несколько дней, когда я пытался создать столкновение для 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);
                    }
                }
            }
        }
    }
...