Я посмотрел вокруг на множество решений, которые другие предложили по этому поводу, и у меня уже есть определенное количество обнаружений столкновений, которое отлично работает.Но это сосредоточено вокруг одного объекта, сталкивающегося со многими ... однако теперь я должен противостоять пулям.Поэтому у меня есть много объектов, которые могут столкнуться со многими.
Вот мое основное обнаружение столкновений для моего Героя, врезавшегося в стены.
for (var vertexIndex = 0; vertexIndex < hero.geometry.vertices.length; vertexIndex++){
var localVertex = hero.geometry.vertices[vertexIndex].clone();
var globalVertex = hero.matrix.multiplyVector3(localVertex);
var directionVector = globalVertex.sub( hero.position );
var ray = new THREE.Raycaster( hero.position, directionVector.clone().normalize() );
var collisionResults = ray.intersectObjects( collidableMeshList );
if ( collisionResults.length > 0 && collisionResults[0].distance < directionVector.length() )
{
console.log('BANG!')
}
}
Проблема в том, что я помещу этот самый код обнаружения вцикл для каждой пули естественно замедляется до неиспользуемой скорости.
Есть ли более простое обнаружение, которое я могу реализовать, чтобы справиться с этим?
Я медленно разбираюсьthree.js и я уверен, что упускаю что-то простое, но просто не могу понять другие примеры.Любая помощь или хорошая точка в правильном направлении будет принята с благодарностью.
Редактировать
Я играл, очевидно, мои первые попытки потерпели неудачу, и я 'Я не намного ближе, но мне интересно, если бы я был ближе к линиям, если бы я попытался определить положение маркеров и посмотреть, находится ли его позиция внутри моего объекта в массиве моих столкновений.
Не уверен, я 'Я видел, что многие люди сталкивались с этим раньше, но изо всех сил пытались найти решение, достаточно определенное для меня, чтобы понять.