переместить несколько объектов me sh от центра с помощью анимации движения - PullRequest
0 голосов
/ 16 июня 2020

Я создаю кнопки взрыва и взрыва, которые перемещают все объекты me sh в сцене от центра ограничивающей рамки, как вы можете видеть. кнопка взрыва работает нормально для всех моих объектов me sh, но кнопка взрыва не переводит мой me sh в предыдущие позиции. возможно, проблема в физике, надеюсь, кто-нибудь может помочь.

  function explodeObjects() {

    var boundingbox = new THREE.Box3();

    for (var i = 0; i < scene.children.length; i++) {
        if (scene.children[i] instanceof THREE.Mesh) {
            var mesh = scene.children[i];
            var position = scene.children[i].position;
            var distance = 5;
            var direction = position.clone().normalize();
            pointNew = position.clone().addScaledVector(direction, distance);
            var x = Math.trunc(pointNew.x, );
            var y = Math.trunc(pointNew.y);
            var z = Math.trunc(pointNew.z);
            stepToExplode(mesh, x, y, z);

        }
    }

    function stepToExplode(mesh, x, y, z) {
        var tween = new TWEEN.Tween(mesh.position).to({
            x: x,
            y: y,
            z: z
        }, 2000).start();
        tween.easing(TWEEN.Easing.Linear.None);
    }

}

function implodeObjects() {

    var boundingbox = new THREE.Box3();

    for (var i = 0; i < scene.children.length; i++) {
        if (scene.children[i] instanceof THREE.Mesh) {
            boundingbox.expandByObject(scene.children[i]);
        }
    }

    for (var i = 0; i < scene.children.length; i++) {
        if (scene.children[i] instanceof THREE.Mesh) {
            var from = boundingbox.getCenter(new THREE.Vector3());
            var mesh = scene.children[i];
            var position = scene.children[i].position;
            var distance = 5;
            var direction = position.clone().normalize();
            var pointNew = position.clone().addScaledVector(direction, distance);
            var x = Math.trunc(pointNew.x, );
            var y = Math.trunc(pointNew.y);
            var z = Math.trunc(pointNew.z);
            stepToImplode(from, mesh, x, y, z)
        }
    }

    function stepToImplode(from, mesh, x, y, z) {
        var tween2 = new TWEEN.Tween(mesh.position).to({
            x: mesh.position.x - x,
            y: mesh.position.y - y,
            z: mesh.position.z - z
        }, 2000).start();
        tween2.easing(TWEEN.Easing.Linear.None);

    }

}
...