Я пытаюсь создать тот же эффект уничтожения, что и в примере с 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;
}
}
}
});
}
Я пытался создать скрипку, но мне не удалось заставить ее работать.