2014-06-16 7 views
2

Я работаю над чем-то с three.js, где мне нужен способ обработки столкновений между объектами в целом. Я думал об использовании cannon.js, так как он поддерживает примитивы, которые мне нужны, но я не всегда особенно нуждаюсь/хочу любой из накладных расходов на физику (скажем, для обнаружения пули, попавшей в противника), я просто в основном хочу используйте его для обнаружения столкновения во многих случаях, так как им не интересно спускать кроличью нору, пишу мою собственную общую систему обнаружения столкновений.Использование cannon.js для обнаружения столкновений в игре three.js

В принципе, я спрашиваю, есть ли относительно простой способ использования cannon.js или, возможно, какой-либо другой библиотеки физики javascript для проверки конфликтов объектов объекта/объекта/местности и определения того, являются ли объекты/не конфликтующими , Если бы я мог получить такие вещи, как глубина проникновения, нормаль столкновения и т. Д., Это было бы еще лучше.

Было бы лучше, если бы я использовал физики, если бы я действительно хотел, чтобы вещи были плотно и эффективно интегрированы с моим кодом three.js? он, похоже, также имеет то, что мне нужно, но производительность показалась довольно плохой из демо на главной странице.

спасибо!

ответ

1

Разработчик, Chanderprall (думаю, я получил это право) сделал Physijs простым в использовании плагином для физики с THREE. Он построил его на ammo.js и у есть экспериментальная ветка cannon.js (к сожалению, только сейчас поддерживаются примитивные фигуры), которые, как я думаю, работают как обычные.

Лично я считаю, что вся библиотека должна использоваться только тогда, когда вы имеете дело с физикой реального времени, где объекты имеют динамические позиции и т. Д. Если вам просто нужны некоторые обнаружения столкновения без физического движка, просто используйте THREE.Raycaster, что может определить, пересекаются ли сетки (рассчитанные с использованием их ограничивающих прямоугольников) с использованием метода intersectObjects. Вы можете быстро адаптировать его, чтобы определить, как далеко объект попал внутрь другого объекта с помощью какого-нибудь умного кода.

http://webmaestro.fr/collisions-detection-three-js-raycasting/