Я пытаюсь обнаружить событие столкновения между динамическим телом и статическим телом и использую физическую систему Дона Маккарди.
Событие "collide" успешно вызывается при столкновении, но последующая функция завершается с ошибкой "не удается прочитать тело свойства undefined для e"
Мой исходный код HTML
<div ng-app = "webVrApp">
<div ng-controller = "trying">
<a-scene physics = "debug: true">
<a-entity id='ball' position = "0 1 -4" material = "color:green;"
geometry = "primitive:sphere; radius: 0.5;" dynamic-body></a-entity>
<a-plane color='red' static-body rotation = "-90 0 0" width = "100"
height = "100"></a-plane>
<a-entity camera look-controls position = "0 1.5 0">
<a-cursor></a-cursor>
<a-entity position = "0 0 -3" id = "weapon" static-body>
<a-box color='blue' width='0.25' height='0.5' depth='3' static-
body></a-box>
</a-entity>
</a-entity>
</a-scene>
</div>
</div>
и код контроллера
app.controller('trying', ['$scope', function($scope){
var $ = function (sel){document.querySelector(sel)};
document.querySelector('#weapon').addEventListener('collide', function(e) {
const ball = $("#ball");
if (e.detail.body.id === ball.body.id) { //error comes for this line unknown 'body'
alert("collision happened");
};
});
}]);
Вот код для этого - кодовый ключ
Пожалуйста помоги.
Я использую компонент aframe-aabb-collider для обнаружения столкновения между двумя объектами, попробуйте. https://www.npmjs.com/package/aframe-aabb-collider-component
Насколько я могу судить из своих исследований, детали тела сталкивающегося объекта недоступны, когда я запускаю его из контроллера angular, но, похоже, он работает нормально, когда я использую этот код в настраиваемом компоненте кадра. @donmccurdy