Триггерная функция Aframe Sphere-Collider при столкновении - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть два объекта в Aframe на разных маркерах AR, и я хотел бы вызвать определенную функцию при их столкновении.Я добавил Aframe-Extras , чтобы использовать модуль Sphere-Collider.К сожалению, я не смог найти никакой документации для этого.

Как бы я связал объекты и вызвал глобальную функцию при их столкновении?Я думаю, мне нужно как-то привязать его через js?

Мой текущий HTML выглядит так:

<a-scene embedded arjs='trackingMethod: best; sourceType: webcam; debugUIEnabled: false; patternRatio: 0.7;'>
    <a-marker preset='custom' type='pattern' url='patterns/1.patt'>
        <a-box sphere-collider color="navy" depth="1" height="1" width="1" position="1 0 0"></a-box>
    </a-marker>

    <a-marker preset='custom' type='pattern' url='patterns/2.patt'>
        <a-sphere sphere-collider color="blue" position="1 0 0" radius="0.5"></a-sphere>
    </a-marker>


    <!-- add a simple camera -->
    <a-entity camera></a-entity>
</a-scene>

enter image description here

Спасиболот!

Обновление 1

Может ли оно также работать на маркерах Ar.js?

<a-marker preset='custom' type='pattern' url='patterns/1.patt'>
    <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9" foo></a-box>
    <a-sphere sphere-collider='' position="3 0.5 -3" radius="0.25" color="#EF2D5E">
        <a-animation attribute="position" dur="5000" fill="forwards" to="-1 0.5 -3" repeat="indefinite"></a-animation>
    </a-sphere>
</a-marker>

Найти здесь скрипку: https://jsfiddle.net/jk4gbu13/5/

enter image description here

1 Ответ

0 голосов
/ 07 декабря 2018

sphere-collider должен испускать событие hit с деталями пересечения.

Наличие объекта с коллайдером:

<a-box sphere-collider></a-box>
<a-sphere></sphere>

Вы можете прослушивать сферу для hit и hitend события для обнаружения, когда произошло столкновение и когда оно закончилось

this.el.addEventListener('hit', (e) => {
   console.log(e)
})
this.el.addEventListener('hitend', (e) => {
    console.log('hitend')
    console.log(e)
})

Проверьте это здесь .


Уго Кевина aabb-collider вроде бы нормально работает с ar.js ( fiddle ).Хотя у него есть hitstart вместо hit события.

...