ТРИ JS столкновения шаров со стеной создают обломки с боеприпасами. js - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь создать тот же эффект уничтожения, что и в примере с Three Js website Ammo / break . Когда мой ball ударит wall, этот wall сломается в обломках (меньшем объекте самого себя), проблема в том, что я создаю шар без Ammo, стена использует Ammo физи c. Я использую AABB столкновение, и оно работает очень хорошо, для этого нет проблем. Но я не знаю, что делать, когда происходит столкновение, чтобы разбить обломки.

Вот так я создаю свою стену с боеприпасами. js:

function createObjects() {

    // Ground
    pos.set( 0, - 0.1, 0 );
    quat.set( 0, 0, 0, 1 );
    var ground = createParalellepipedWithPhysics( 250, 1, 250, 0, pos, quat, new THREE.MeshLambertMaterial( { color: 0xFFFFFF } ) );
    ground.receiveShadow = true;

    // WALL
    var stoneMass = 100;
    var stoneHalfExtents = new THREE.Vector3( FIELD_WIDTH/2, 2, 0.15 );
    var numStones = 1;
    quat.set( 0, 0, 0, 1 );

    for ( var i = 0; i < numStones; i ++ ) {

        pos.set( 0, 2, -(FIELD_LENGTH/2) );

        createObject( stoneMass, stoneHalfExtents, pos, quat, createMaterial( 0xB0B0B0 ) );

    }

}

Это почти тот же код, приведенный в примере Боеприпасы / Перерыв . Мне удается это сделать, создав новый шар с боеприпасами c, но мне нужно сохранить свои первые свойства мяча. Это моя функция столкновения:

function checkCollision(){

    let boxesCollision = false;

    staticCollideMesh.some( function(object){ 

      if(object.BBox.intersectsBox( ball.BBox ) ){

        boxesCollision = true;
        if( boxesCollision ){

          switch (object) {

            case wall:
              createDebris();
              break;

            default:
              break;
          }
        }
      }
    });
  }

Я пытался создать скрипку, но мне не удалось заставить ее работать.

...